乐趣区

关于java:类加载顺序

package api;

//1. 父类动态成员和动态初始化块,按在代码中呈现的程序顺次执行
//2. 子类动态成员和动态初始化块,按在代码中呈现的程序顺次执行
//3. 父类实例成员和实例初始化块,按在代码中呈现的程序顺次执行
//4. 父类构造方法
//5. 子类实例成员和实例初始化块,按在代码中呈现的程序顺次执行
//6. 子类构造方法
public class Box {

public static void main(String[] args) {A ab = new B();
    System.out.println("---");
    ab = new B();}

}
class A {

private static int numA;
private int numA2;

static {System.out.println("A 的动态字段 :" + numA);
    System.out.println("A 的动态代码块");
}

{System.out.println("A 的成员变量  :" + numA2);
    System.out.println("A 的非动态代码块");
}

public A() {System.out.println("A 的结构器");
}

}

class B extends A {

private static int numB;
private int numB2;

static {System.out.println("B 的动态字段 :" + numB);
    System.out.println("B 的动态代码块");
}

{System.out.println("B 的成员变量 :" + numB2);
    System.out.println("B 的非动态代码块");
}

public B() {System.out.println("B 的结构器");
}

}

退出移动版