Java有参构造⽅法和⽆参构造⽅法详解
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:观察构造⽅法调⽤的时机
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论