类初始化过程
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