class B extends Object { static { System.out.println("Load B"); } public B() { System.out.println("Create B"); } } class A extends B { static { System.out.println("Load A"); } public A() { System.out.println("Create A"); } } public class Testclass { public static void main(String[] args) { new A(); } }
答案:
Load B -> Load A ->Create B ->Create A
父类静态代码块-》子类静态代码块-》父类构造代码块-》父类构造函数-》子类构造代码块-》子类构造函数
初始化过程:
1. 初始化父类中的静态成员变量和静态代码块 ;
2. 初始化子类中的静态成员变量和静态代码块 ;
3.初始化父类的普通成员变量和代码块,再执行父类的构造方法;
4.初始化子类的普通成员变量和代码块,再执行子类的构造方法;