06.继承中的构造方法执行顺序

继承中构造方法的执行顺序

  • A:super(实参列表);语句 在子类的构造方法中使用,用来调用父类中的构造方法(具体哪一个由传递的参数决定),并且只能在构造方法第一行使用
  • B:this(实参列表); 语句 在类的构造方法中使用,用来调用本类中的其它构造方法(具体哪一个由传递的参数决定),并且只能在构造方法的第一行使用
package com.itheima;
/*
 * 继承中构造方法的执行顺序
 *          在有子父类继承关系的类中,创建子类的对象,调用子类的构造方法,
 *          如果子类构造方法的第一行没有调用父类的构造方法,则会默认调用父类的无参构造(※注意:第一行不算注释)
 *          肯定会先执行父类的构造,因为要先给父类的成员变量进行初始化,子类可能会使用到
 * 为什么要调用父类构造?
 *          因为需要给父类的成员变量初始化
 * 
 * 我们可以使用super()在构造方法的第一行调用父类的构造方法
 * 
 * 我是父类无参构造 --- 我是子类有参构造 --- 我是子类无参构造
 */
public class ExtendsDemo6 {
    public static void main(String[] args) {
//      Die d = new Die();
        Zi z = new Zi();
    }
}

class Die {
    public Die() {
        System.out.println("我是父类无参构造");
    }
    
    public Die(int num) {
        System.out.println("我是父类有参构造");
    }
}

class Zi extends Die {
    public Zi() {
//      super(1);
        this(2);//不会再调用父类的无参构造了
        System.out.println("我是子类无参构造");
    }
    
    public Zi(int num) {
//      super();    //会默认调用父类无参构造
        System.out.println("我是子类有参构造");
    }
}

你可能感兴趣的:(06.继承中的构造方法执行顺序)