淺談Java中父類與子類的加載順序詳解

[html] view plain copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. class Parent {  
  2.     // 靜態變量  
  3.     public static String p_StaticField = "父類--靜態變量";  
  4.     // 變量(其實這用對象更好能體同這一點,如專門寫一個類的實例)  
  5.     
  6.     //如果這個變量放在初始化塊的後面,是會報錯的,因爲你根本沒有被初始化  
  7.     public String p_Field = "父類--變量";  
  8.     // 靜態初始化塊  
  9.     static {  
  10.         System.out.println(p_StaticField);  
  11.         System.out.println("父類--靜態初始化塊");  
  12.     }  
  13.     // 初始化塊  
  14.     {  
  15.         System.out.println(p_Field);  
  16.         System.out.println("父類--初始化塊");  
  17.     }  
  18.     // 構造器  
  19.     public Parent() {  
  20.         System.out.println("父類--構造器");  
  21.     }  
  22. }  
  23. public class SubClass extends Parent {  
  24.     // 靜態變量  
  25.     public static String s_StaticField = "子類--靜態變量";  
  26.     // 變量  
  27.     public String s_Field = "子類--變量";  
  28.     // 靜態初始化塊  
  29.     static {  
  30.         System.out.println(s_StaticField);  
  31.         System.out.println("子類--靜態初始化塊");  
  32.     }  
  33.     // 初始化塊  
  34.     {  
  35.         System.out.println(s_Field);  
  36.         System.out.println("子類--初始化塊");  
  37.     }  
  38.     // 構造器  
  39.     public SubClass() {  
  40.         //super();  
  41.         System.out.println("子類--構造器");  
  42.     }  
  43.     // 程序入口  
  44.     public static void main(String[] args) {  
  45.         System.out.println("*************in main***************");  
  46.         new SubClass();  
  47.         System.out.println("*************second subClass***************");  
  48.         new SubClass();  
  49.     }  
  50. }  
 


輸出結果
父類--靜態變量
父類--靜態初始化塊
子類--靜態變量
子類--靜態初始化塊
*************in main***************
父類--變量
父類--初始化塊
父類--構造器
子類--變量
子類--初始化塊
子類--構造器
*************second subClass***************
父類--變量
父類--初始化塊
父類--構造器
子類--變量
子類--初始化塊
子類--構造器

發佈了2 篇原創文章 · 獲贊 2 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章