我与咖啡娘的爱恨情仇

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

2018-09-19  本文已影响0人  今天庹

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

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("我是子类有参构造");
    }
}
上一篇下一篇

猜你喜欢

热点阅读