Java构造方法(构造器)

Java的所有类都有构造方法(2019.8.15修改,匿名内部类也没有构造方法,因为没有类名)

构造方法的作用就是进行对象的初始化

构造方法相对于其他普通方法来讲,有以下一些原则:

        1.方法名称必须与类名相同

        2.构造方法没有返回值类型声明

        3.每个类中一定至少存在一个构造方法(没有明确定义,则系统自动会生成一个无参构造(在字节码中))

 

关于这三点来聊一聊个人的看法:

        第一点:

        子类是会继承父类的所有属性和方法的,那么子类会不会继承父类的构造方法呢?         

我当时觉得是会的,但是仔细一想,如果子类继承了父类的构造方法,在子类中就出现了与类名不同构造方法,这与构造方法的

原则不一致。所以是不会继承的,但是子类对象在进行实例化之前是一定要先实例化父类对象的。

        那么子类并没有继承父类的构造方法,但是要使用父类的构造方法怎么办?

答案就是用 super()语句来调用,实际上在子类的构造方法中都有super();语句,只不过有些是隐含着没有写出来,但实际是存在

父类的构造方法不一定只有一个,可能有多个,不一定只有无参构造,也可能有各种各样的有参构造,因为构造方法也是可以重

载的,构造方法重载也证明了咱们之前说的方法重载的概念其实和返回值没有关系。构造方法重载也就意味着对象的多样性,这

也是Java多态的体现。

        第二点:构造方法没有返回值类型声明,这是构造方法最基本的特征,编译器是根据程序结构来区分普通方法与构造方法

的。没有返回值声明和返回值为viod有本质的区别,不要混淆。

        第三点:这也是非常重要的一点,但是要注意,系统自动生成无参构造的条件是,你并没有明确定义任何的构造方法,如果

你定义了一个构造方法,系统则不会再自动生成无参构造。(这里建议我们去定义一个类的时候要定义一个无参构造)
 

说到这里有一些小点需要注意,点虽小,但是很重要。

构造方法重载的时候,有时候用this()调用本类构造方法,this()语句要放在构造方法内的第一行,作为第一条语句

同理,利用super()语句明确的指定你要调用的是哪个父类的构造方法时,super()也需要放在构造方法内的第一行,作为第一条语

句,原因很简单,这样规定的原因是为了确保你有任何操作之前,已经有对象完成了初始化。

如果有关于this和super的使用还不是特别了解的,可以参考一下this、super用法详解

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值