例子
class X {
Y y = new Y();
public X (){
System.out.println("x");
}
}
class Y{
public Y () {
System.out.println("y");
}
}
class Z extends X{
Y y = new Y();
public Z(){
System.out.println("z");
}
public static void main (String [] args) {
new Z();
}
输出 y x y z
属性,方法,构造方法,代码块,静态和非静态
继承关系,先初始化父类,先静态后,先父类后子类,同类中都是静态按照从上往下顺序
一个类的初始化,都在成员变量加载后,再加载构造方法
第一点,所有的类都会优先加载基类
第二点,静态成员的初始化优先
第三点,成员初始化后,才会执行构造方法
第四点,静态成员的初始化与静态块的执行,发生在类加载的时候。
第四点,类对象的创建以及静态块的访问,都会触发类的加载。