package com.it;
public class ExtendsDemo6 {
public static void main(String[] args) {
Zi zz = new Zi(1);
}
}
class Die {
public Die() {
System.out.println("这是父类无参构造");
};
public Die(int num) {
this();
System.out.println("这是父类有参构造");
};
}
class Zi extends Die {
public Zi() {
super(1);
System.out.println("这是子类无参构造");
};
public Zi(int num) {
this();
System.out.println("这是子类有参构造");
};
}
输出结果就是:
这是父类无参构造
这是父类有参构造
这是子类无参构造
这是子类有参构造
继承中子类的构造方法感觉就是顺着代码块内的代码行顺序一步步的往上跳,比如调用子类无参构造的时候,就是先看子类的无参构造方法中的第一行代码,这第一行代码指向那个构造就跳转到哪个构造上去,直到跳转到父类构造为止。如果父类构造中的第一行还有this或者super,则继续跳转,直到没有this或者super为止。
所以总的来说当要用到子类构造的时候,执行顺序要从(第一行没有this或者super的)父类构造中开始。