java无参构造赋值怎么没用_Java有参构造方法和无参构造方法详解

一:有参数构造方法

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

DEMO:定义有参数构造方法

731efb215b14f8caff407aa70f2293ec.png

ea8c8641b46ff7b7385bfc48f1fdad5a.png

4871ea65839e195050031a87ddfb5563.png

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

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

DEMO:调用有参数构造方法

fae892a1d3205b90427309c415e4b492.png

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

DEMO:继续观察代码

e4e307ae181a8f12517e5527cdeca8f8.png

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

Java学习交流群697888503现在我们定义了四个有参数构造方法(JVM认为你不需要无参数构造方法了),所以JVM不再提供无参数的构造的构造方法了。

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

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

54fe0245179c164a7de31a13c457c154.png

2135b079d0ec84741f168ec2b3422f24.png

429b8ad2979dab0c333d64fef8e98e46.png

总结:

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

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

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

二:Java无参构造方法

一:构造方法给的概念

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

DEMO:观察代码

3d5275d8a7f828acd8135ad863359ca8.png

以上的代码在创建的对象的时候使用“Student()”,发现了在“Student”之后使用小括号,这和方法的调用很相似,其实“Student()”就是-一个方法,是一个特殊的方法-构造方法,发现了构造方法的名称和类名一样,

Java学习交流群697888503而且一定是在new关键字之后调用的。但是我们没有在Student类中看到这个方法依然能够调用,原因是JVM(Java的虚拟机,暂时不用管,你就认为是系统,后面我们讲解JVM内存模型的时候会分析)系统默认为该类提供了无参数构造方法,所以我们才能调用。

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

DEMO:显示的定 义构造方法

baab34c80a635ec418645c48963d278f.png

ec2da7c143d06e160ac6cc1c971926f2.png

3a2774ae19270da56df332654b5a745c.png

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

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

40a5b536064fa2cca0814ecef1539077.png

85585e960ad240161a03a413ea4a41f5.png

总结:

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

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

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

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值