public class A {
public A(String var) {
System.out.println(var);
}
}
public class B {
{
System.out.println("Parent block");
}
static {
System.out.println("Parent static block");
}
private static A ba = new A("static var in parent B");
public B() {
System.out.println("Parent constructor");
}
}
public class C extends B {
private static A cAa = new A("static var in Child C");
{
System.out.println("Child block");
}
static {
System.out.println("Child static block");
}
public C() {
System.out.println("Child constructor");
}
public static void main(String[] args) {
C c = new C();
}
}
运行该程序,结果是
Parent static block
static var in parent B
static var in Child C
Child static block
Parent block
Parent constructor
Child block
Child constructor
由此可见,创建一个对象,执行顺序是:
父类静态块和变量-》子类静态块和变量-》父类非静态块-》父类构造函数-》子类非静态块-》子类构造函数