1.首先,初始化父類中的靜態成員變數和靜態**塊(jvm載入類時執行,僅執行一次),按照在程式中出現的順序初始化;
2.然後,初始化子類中的靜態成員變數和靜態**塊(jvm載入類時執行,僅執行一次),按照在程式中出現的順序初始化;
3.其次,初始化父類中的普通成員變數和**塊(每一次建立物件時建立),再執行父類的構造方法;
4.最後,初始化子類的普通成員變數和**塊,再執行子類的構造方法;
例題,執行以下**的輸出:
(1)首先初始化父類的普通成員變數和**塊,執行c c = new c();輸出c
(2)因為已經顯式呼叫父類帶參建構函式super("b")了,所以子類呼叫的父類構造器是a(string s),而不是無參構造器,除非在子類構造器裡沒有顯式呼叫父類構造器,編譯器才在子類構造器為其預設新增super();
super("b")表示呼叫父類的構造方法,不呼叫父類的無參構造器,輸出b
(3)system.out.print("b");輸出b
答案:cbb
java類初始化過程
測試3個內容 類載入順序 子父類執行過程 物件初始化過程 從幾次試驗我們看到 當執行到類時,類被載入到記憶體,並初始化 靜態成員被載入到共享區 不用例項化物件就可以呼叫靜態資源 靜態成員變數,靜態成員方法,靜態 塊,只初始化一次 而普通變數,普通 塊,構造方法,在每次例項化物件時都要初始化 子類物件...
JAVA類初始化過程
輸入結果為 乙個類要建立例項需要先載入並初始化該類 main方法所在的類需要先載入和初始化 乙個子類要初始化需要先初始化父類 乙個類初始化就是執行 方法 方法由靜態類變數顯示賦值 和靜態 塊組成 類變數顯示賦值 和靜態 塊 從上到下順序執行 方法只執行一次 a,例項初始化就是執行 方法 方法可能過載...
Java 初始化過程
初始化過程 載入器啟動並且找出匯出類derived的編譯 即名為derived.class的檔案之中 在對它載入的過程中,編譯器注意到它有乙個基類,於是繼續進行基類的載入 基類中的static變數初始化,然後是匯出類的static 如果乙個成員被宣告為 static,它就能夠在它的類的任何物件建立之...