Java程序初始化的执行顺序1:
父类静态变量—>父类静态代码块—>子类静态变量—>子类静态代码块—>父类非静态变量—>父类非静态代码块—>父类构造方法—>子类非静态变量—>子类非静态代码块—>子类构造方法
class A{
public A() {
System.out.println("class A");
}
{System.out.println("I'm A class");}
static {System.out.println("class A static");}
}
public class B extends A {
public B() {
System.out.println("class B");
}
{System.out.println("I'm B class");}
static {System.out.println("class B static");}
public static void main(String[] args) {
new B();
}
}
输出
class B static
I'm A class
class A
I'm B class
class B