Java初始化顺序
初始化顺序示例代码:
1 package com.cnblogs.javalouvre.basic; 2 3 public class Bar extends Foo { 4 5 private static String staticField = "::子类静态变量..."; 6 7 static { 8 System.out.println(staticField); 9 System.out.println("::子类静态初始化块..."); 10 } 11 12 private String field = "::子类成员变量..."; 13 14 { 15 System.out.println(field); 16 System.out.println("::子类初始化块..."); 17 } 18 19 public Bar() { 20 System.out.println("::子类构造方法..."); 21 } 22 23 } 24 25 class Foo { 26 27 private static String staticField = "::父类静态变量..."; 28 29 static { 30 System.out.println(staticField); 31 System.out.println("::父类静态初始化块..."); 32 } 33 34 private String field = "::父类成员变量..."; 35 36 { 37 System.out.println(field); 38 System.out.println("::父类初始化块..."); 39 } 40 41 public Foo() { 42 System.out.println("::父类构造方法..."); 43 } 44 45 }
实例化类Bar,输出结果如下:
1 ::父类静态变量... 2 ::父类静态初始化块... 3 ::子类静态变量... 4 ::子类静态初始化块... 5 ::父类成员变量... 6 ::父类初始化块... 7 ::父类构造方法... 8 ::子类成员变量... 9 ::子类初始化块... 10 ::子类构造方法...
小结:Java类装载后初始化顺序为:
1、父类静态变量,静态块;
2、子类静态变量,静态块;
3、父类成员变量,块,构造方法;
4、子类成员变量,块,构造方法;
-----------------------------------------------------------------------------------------------------------
薔薇猛虎皆成個性,陽光雨露俱是天恩!
薔薇猛虎皆成個性,陽光雨露俱是天恩!
浙公网安备 33010602011771号