java類的實例化順序


  • 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 }

 

運行結果:

父類的靜態變量
父類的靜態塊
子類的靜態變量
子類的靜態塊
父類的非靜態變量
父類的非靜態塊
父類構造方法
子類的非靜態變量
子類的非靜態塊
子類的構造方法

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM