Java继承构造方法的访问特点:
1、子类构造方法中有一个默认隐含的super()调用,所以一定是先调用的父类构造,后执行的子类构造
2、子类构造可以通过super关键字来调用父类重载构造
3、super的父类构造调用,必须是子类构造方法的第一个语句,不能一个子类构造调用多次super构造
4、子类必须调用父类构造方法,不写则默认瘾式赠送一个super();写了则用写的指定的super调用,super只能有一个,还必须是第一个
详细:
1、子类构造方法中有一个默认隐含的super()调用,所以一定是先调用的父类构造,后执行的子类构造



瘾式调用super()方法如图上图所示
2、子类构造可以通过super关键字来调用父类重载构造
在此之前先来看一个案例
我在无参构造方法的基础上添加一个 int num 使其称为一个有参构造,结果编译器报错了



原因是Zi在调用Fu类的无参构造方法的时候,Zi类中编译器会默认送一个super()方法,使其调用Fu类的无参构造方法,现在,无参构造方法的基础上添加一个 int num 使其称为一个有参构造后,结果编译器显示的错误如下

There is no default constructor available 'com.baidu1.Fu'
翻译过来就是:没有可用的默认构造函数'com.baidu1.Fu'
用人的话来说,在com.baidu1这个包下的Fu类没有可以使用的构造方法
解决的办法就是重载一个父类无参构造方法,或者用super()带参调用Fu类的有参的构造方法
第一种,重载一个父类无参构造方法
这个方法依然是调用的无参构造




第二种方法,用super()带参调用Fu类的有参的构造方法
这种方法是调用Fu类的有参构造,因为要传参数啦




3、super的父类构造调用,必须是子类构造方法的第一个语句,不能一个子类构造调用多次super构造
演示第一个错误的写法

错误原因:只有子类构造方法才能调用父类构造方法,普通方法是不能调用的
演示第一个错误的写法

来看一下错误提示:

Call 'super()' must be first statement in constructor body
翻译:调用“super()”必须是构造函数体中的第一个语句
================================
注意:调用“super()”必须是构造函数体中的第一个语句,
翻译是说的第一个语句,而不是编译器中的构造方法的第一行,这个有很大的区别
下面这样依然报错

语句应该是以 ; 结尾的,语句应该是以 ; 结尾的,语句应该是以 ; 结尾的
说三遍
本文详细解析了Java中子类继承父类构造方法的规则:首先,子类构造器会默认调用父类无参构造器;其次,通过super关键字可指定调用父类的有参构造器,且super调用必须作为子类构造器的第一行;最后,每个子类构造器只能调用一次父类构造器。了解这些原则对于理解和编写Java代码至关重要。
715

被折叠的 条评论
为什么被折叠?



