- 1. 父類靜態成員和靜態初始化塊 ,按在代碼中出現的順序依次執行
- 2. 子類靜態成員和靜態初始化塊 ,按在代碼中出現的順序依次執行
- 3. 父類實例成員和實例初始化塊 ,按在代碼中出現的順序依次執行
- 4. 父類構造方法
- 5. 子類實例成員和實例初始化塊 ,按在代碼中出現的順序依次執行
- 6. 子類構造方法
總結:父類靜態成員和靜態代碼塊->子類靜態成員和靜態代碼塊->父類非靜態成員和非靜態代碼塊->父類構造方法->子類非靜態成員和非靜態代碼塊->子類構造方法
父類:
1 public class A { 2 3 public static String a=printStr("父類的靜態變量"); 4 public String s = printStr("父類的非靜態變量"); 5 static { 6 printStr("父類的靜態塊"); 7 } 8 { 9 printStr("父類的非靜態塊"); 10 } 11 public A(){ 12 printStr("父類構造方法"); 13 } 14 15 16 public static String printStr(String str){ 17 System.out.println(str); 18 return str; 19 } 20 }
子類:
1 public class B extends A { 2 3 public static String b=printStr("子類的靜態變量"); 4 public String st = printStr("子類的非靜態變量"); 5 6 static { 7 printStr("子類的靜態塊"); 8 } 9 { 10 printStr("子類的非靜態塊"); 11 } 12 public B(){ 13 printStr("子類的構造方法"); 14 } 15 16 //main 17 public static void main(String[] args) { 18 new B(); 19 } 20 }
運行結果:
父類的靜態變量
父類的靜態塊
子類的靜態變量
子類的靜態塊
父類的非靜態變量
父類的非靜態塊
父類構造方法
子類的非靜態變量
子類的非靜態塊
子類的構造方法