Java有参构造方法和无参构造方法详解

 

一:有参数构造方法

在之前我们要为一个对象赋值,先要创建好对象之后然后“对象名.属性名”或者调用属性的setter为属性赋值。但是在很多时候觉得这样做很麻烦,最好的做法是在创建对象的时候完成属性的初始化操作,此时需要使用到有参数构造方法方能完成该功能(有人把构造方法叫做构造器)。

 

DEMO:定义有参数构造方法

上面定义了四个有参数构造方法,发现了构造方法可以重载,

书写的习惯是重载的构造方法按照参数的个数进行升序排序。但是如何去调用有参数的构造方法呢?

 

DEMO:调用有参数构造方法

此时发现了我们不需要像之前一样,要为对象的属性赋值就必须先创建对象再使用“对象名.属性名”或者使用setter 方法去实现了,而是直接使用有参数的构造方法去实现。

 

DEMO:继续观察代码

此时提示“这个无参数构造Student()方法未定义”,在之前我们说了JVM会默,认为类提供无参数构造方法,但是这只能是在没有任何有参构造方法的条件下,现在我们定义了四个有参数构造方法(JVM认为你不需要无参数构造方法了),所以JVM不再提供无参数的构造的构造方法了。

所以我们定义 了有参数构造方法那么也需要显示的定义出无参数构造方法。

 

DEMO:显示定义无参数构造方法

 

总结:

1、构造方法的出现是为了方便为对象的属性初始化值

2、一般在类中构造方法的顺序都是按照参数的个数去升序排序的

3、如果定义了有参构造方法那么JVM就不会在提供无参数构造了,所以如果我们定义了有参构造那么无参构造也要显示的定义出来。

 

二:Java无参构造方法

 

一:构造方法给的概念

在之前我们使用过方法,在调用的方法的是时候需要在方法名称之后加.上小括号,括号里面可以传递实参,那么我们在创建一个对象的时候使用的是“new类名()”的方式去实现,其实上这也是一种方法,但是这个方法我们没有明确的去定义,那为什么可以调用呢?观察代码。

DEMO:观察代码

以上的代码在创建的对象的时候使用“Student()”,发现了在“Student”之后使用小括号,这和方法的调用很相似,其实“Student()”就是-一个方法,是一个特殊的方法-构造方法,发现了构造方法的名称和类名一样,而且一定是在new关键字之后调用的。但是我们没有在Student类中看到这个方法依然能够调用,原因是JVM(Java的虚拟机,暂时不用管,你就认为是系统,后面我们讲解JVM内存模型的时候会分析)系统默认为该类提供了无参数构造方法,所以我们才能调用。

我们也可以显示的将该方法定义出来。

DEMO:显示的定 义构造方法

此时我们显示的定义了一个五参数构造方法,构造方法是在什么时候调用的呢?如何很明显的看出调用了构造方法?

DEMO:观察构造方法调用的时机

总结:

1、构造方法的概念(构造方法的出现是为了在实例化对象的时候可以为对象的属性初始化值)。

2、默认jvm会为每个类提供一个无参数构造方法。

3、构造方法的特征和它与普通方法的区别你要清楚。

 

 

学习不要走马观花的学,每个知识重点大纲,就是学习路线都是根据每一天市场上多数公司用到的新技术整理,在学习的时候还需要结合练习题来做这里的话我也将我之前在学习过程中用到的一些学习资料整理成了文档,以及我自身之前的一个面试文案和知识点补充,有需要的朋友可以加我的QQ群   697888503   ,这里也希望大家最终都能够学有所成,学习编程不是一天两天的功夫,勤能补拙才是硬道理,祝大家最终都能成为一名合适开发攻城狮。 

  • 10
    点赞
  • 1
    评论
  • 41
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
matlab函数大全-matlab函数大全.doc 比较白痴的东西,不过对初学者也许有用,特分享一下。不要喷我哦!函数具体用法可以用help查一下。附件内容与下面一样的。 Aabs 绝对值、模、字符的ASCII码值 acos 反余弦 acosh 反双曲余弦 acot 反余切 acoth 反双曲余切 acsc 反余割 acsch 反双曲余割 align 启动图形对象几何位置排列工具 all 所有元素非零为真 angle 相角 ans 表达式计算结果的缺省变量名 any 所有元素非全零为真 area 面域图 argnames 函数M文件宗量名 asec 反正割 asech 反双曲正割 asin 反正弦 asinh 反双曲正弦 assignin 向变量赋值 atan 反正切 atan2 四象限反正切 atanh 反双曲正切 autumn 红黄调秋色图阵 axes 创建轴对象的低层指令 axis 控制轴刻度和风格的高层指令 B b bar 二维直方图 bar3 三维直方图 bar3h 三维水平直方图 barh 二维水平直方图 base2dec X进制转换为十进制 bin2dec 二进制转换为十进制 blanks 创建空格串 bone 蓝色调黑白色图阵 box 框状坐标轴 break while 或for 环中断指令 brighten 亮度控制 C c capture (3版以前)捕获当前图形 cart2pol 直角坐标变为极或柱坐标 cart2sph 直角坐标变为球坐标 cat 串接成高维数组 caxis 色标尺刻度 cd 指定当前目录 cdedit 启动用户菜单、控件回调函数设计工具 cdf2rdf 复数特征值对角阵转为实数块对角阵 ceil 向正无穷取整 cell 创建元胞数组 cell2struct 元胞数组转换为构架数组 celldisp 显示元胞数组内容 cellplot 元胞数组内部结构图示 char 把数值、符号、内联类转换为字符对象 chi2cdf 分布累计概率函数 chi2inv 分布逆累计概率函数 chi2pdf 分布概率密度函数 chi2rnd 分布随机数发生器 chol Cholesky分解 clabel 等位线标识 cla 清除当前轴 class 获知对象类别或创建对象 clc 清除指令窗 clear 清除内存变量和函数 clf 清除图对象 clock 时钟 colorcube 三浓淡多彩交叉色图矩阵 colordef 设置色彩缺省值 colormap 色图 colspace 列空间的基 close 关闭指定窗口 colperm 列排序置换向量 comet 彗星状轨迹图 comet3 三维彗星轨迹图 compass 射线图 compose 求复合函数 cond (逆)条件数 condeig 计算特征值、特征向量同时给出条件数 condest 范 -1条件数估计 conj 复数共轭 contour 等位线 contourf 填色等位线 contour3 三维等位线 contourslice 四维切片等位线图 conv 多项式乘、卷积 cool 青紫调冷色图 copper 古铜调色图 cos 余弦 cosh 双曲余弦 cot 余切 coth 双曲余切 cplxpair 复数共轭成对排列 csc 余割 csch 双曲余割 cumsum 元素累计和 cumtrapz 累计梯形积分 cylinder 创建圆柱 D d dblquad 二重数值积分 deal 分配宗量 deblank 删去串尾部的空格符 dec2base 十进制转换为X进制 dec2bin 十进制转换为二进制 dec2hex 十进制转换为十六进制 deconv 多项式除、解卷 delaunay Delaunay 三角剖分 del2 离散Laplacian差分 demo Matlab演示 det 行列式 diag 矩阵对角元素提取、创建对角阵 diary Matlab指令窗文本内容记录 diff 数值差分、符号微分 digits 符号计算中设置符号数值的精度 dir 目录列表 disp 显示数组 display 显示对象内容的重载函数 dlinmod 离散系统的线性化模型 dmperm 矩阵Dulmage-Mendelsohn 分解 dos 执行DOS 指令并返回结果 double 把其他类型对象转换为双精度数值 drawnow 更新事件队列强迫Matlab刷新屏幕 dsolve
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值