Java 类加载顺序
新建一个Animal类如下:
1 public class Animal { 2 3 static int x1 = print("static animal x1"); 4 private int i = print("hello animal i"); 5 6 static{ 7 System.out.println("A1"); 8 } 9 10 public Animal(){ 11 System.out.println("A2"); 12 } 13 14 static{ 15 System.out.println("A3"); 16 System.out.println("A4"); 17 } 18 19 { 20 System.out.println("A5"); 21 } 22 23 static int print(String str){ 24 System.out.println(str); 25 return 2; 26 } 27 28 }
然后新建一个Cat类如下:
1 public class Cat extends Animal{ 2 3 private int j = print("hello j"); 4 static int x2 = print("static cat"); 5 6 static{ 7 System.out.println("B1"); 8 } 9 10 public Cat(){ 11 System.out.println("B2"); 12 } 13 14 { 15 System.out.println("B3"); 16 } 17 18 static{ 19 System.out.println("B4"); 20 } 21 22 public static void main(String[] args){ 23 int i = 0; 24 i++; 25 Cat cat = new Cat(); 26 cat.plus(i); 27 28 System.out.println(i); 29 30 31 } 32 33 public void plus(int i){ 34 i++; 35 36 } 37 38 }
得到以下运行结果:

得出结论:
新建一个类时,加载顺序为:父类静态定义初始化>>>> 子类静态定义初始化 >>> 父类定义初始化 >>> 父类构造代码块初始化 >>> 父类构造方法初始化 >>> 子类定义初始化 >>> 子类构造代码块初始化 >>> 子类构造方法初始化。

浙公网安备 33010602011771号