类初始化过程
类初始化过程
1. 初始化父类的静态成员和静态代码块,按顺序执行,只执行一次;
2. 初始化子类的静态成员和静态代码块,按顺序执行,只执行一次;
3. 初始化父类的实例成员和实例代码块,按顺序执行,每次创建对象都执行一次;
4. 初始化父类的构造方法,每次创建对象都执行一次;
5. 初始化子类类的实例成员和实例代码块,按顺序执行,每次创建对象都执行一次;
6. 初始化子类的构造方法,每次创建对象都执行一次;
1 package test; 2 3 class ClassInitSuper{ 4 static { 5 System.out.println("super static init"); 6 } 7 8 { 9 System.out.println("super instance init"); 10 } 11 12 public ClassInitSuper(){ 13 System.out.println("super new init"); 14 } 15 } 16 17 18 public class ClassInit extends ClassInitSuper{ 19 20 static { 21 System.out.println("sub static init"); 22 } 23 24 { 25 System.out.println("sub instance init"); 26 } 27 28 public ClassInit(){ 29 System.out.println("sup new init"); 30 } 31 32 public static void main(String[] args) { 33 new ClassInit(); 34 new ClassInit(); 35 36 } 37 38 public static void test(){ 39 40 41 } 42 43 }
输出结果如下:
super static init sub static init super instance init super new init sub instance init sup new init super instance init super new init sub instance init sup new init