子类构造函数特点:
子类所有的构造函数,默认都会访问父类中空参数的构造函数。
因为子类每一个构造函数内的第一行都有一句隐式super();
当父类中没有有空参数的构造函数时,
子类必须手动通过super语句形式来指定要访问父类中的构造函数。
当然:子类的构造函数第一行也可以手动指定this语句来访问本类中的构造函数。
子类中至少会有一个构造函数会访问父类中的构造函数
代码如下:
- class Fu {
- public Fu(String name) {
- System.out.println("fu..." + name);
- }
- }
- class Zi extends Fu {
- public Zi() {
- // super();//此语句不能执行,因为父类中没有空构造函数
- super("haha"); // 因为父类中没有默认空构造函数,子类必须手动通过super语句制定要访问的父类构造函数
- System.out.println("zi..run");
- }
- public Zi(String name) {
- this();
- // super(name);//错误,因为super()必须放在构造函数的第一行,一个构造函数中,super和this只能存在一个
- System.out.println("zi..." + name);
- }
- }
- public class Demo {
- public static void main(String[] args) {
- new Zi();//fu...haha zi..run
-
- new Zi("haha");//fu...haha zi..run zi...haha
- }
- }
复制代码
|
|