类加载时候的构造器加载顺序

时间:2021-01-23 19:31:01

自己有时候常常会在这方面犯错,所以记一下。

    class X {  
Y b=new Y();
X() {
System.out.println("X");
}
}
class Y {
Y() {
System.out.println("Y");
}
}
public class Z extends X {
Y y=new Y();
Z() {
super();
System.out.println("Z");
}
public static void main(String[] args) {
new Z();
}
}
//输出结果yxyz

改例子中,首先加载Z的父类(从最远的父类开始加载),本例中Z继承自X,X没有父类了,所以加载顺序为:
X的成员变量—–>X构造方法——>Z的成员变量——>Z的构造方法。

总结
加载顺序:父类静态–>子类静态—>父类成员变量–>父类构造方法—–>子类成员变量—->子类构造方法