簡要記錄類的載入執行順序:
先說結論:
父類靜態(塊/變數)–>子類靜態(塊/變數)–>父類普通(變數/塊)–>父類構造器–>子類普通(變數/塊)–>子類構造器
具體執行過程:
程式先找到main函式,不管此時有沒有使用new進行建立物件,都會將涉及到的類(例如父類)進行類載入;
發現son類有乙個父類father類;
初始化有關father類的靜態變數與靜態塊(順序依據書寫的順序執行);
初始化有關son類的靜態變數與靜態塊(順序依據書寫的順序執行);
全部靜態初始完畢,以上過程都是建立物件之前執行,且僅執行一次;
建立son類物件son1;
初始化父類普通塊與普通變數(順序依據書寫的順序執行);
初始化父類構造器;
初始化子類普通塊與普通變數(順序依據書寫的順序執行);
初始化子類構造器;
son類物件son2同son1;
父類:
package test.loadsort;
public class father
public string str2 = println("父類普通變數2");
public static string str3 = println("父類靜態變數3");
public father()
public static string println(string str)
}
子類:
package test.loadsort;
public class son extends father
public string str2 = println("子類普通變數2");
static
public son()
public static string str3 = println("子類靜態變數3");
public static void main(string args)
}
執行結果:
父類靜態變數1
父類靜態塊2
父類靜態變數3
子類靜態變數1
子類靜態塊2
子類靜態變數3
--------靜態只執行一次--------
父類普通塊1
父類普通變數2
父類構造器3
子類普通塊1
子類普通變數2
子類構造器3
*******普通根據new次數執行*********
父類普通塊1
父類普通變數2
父類構造器3
子類普通塊1
子類普通變數2
子類構造器3
JS 的載入執行順序
近來對js在html中的載入順序有點小疑惑,遂測試分析了一把 just a test case.you are in footer.結果依次為 div標籤 before head 出現,i m in head div標籤 after head 出現,i m in body part1 div jus...
Java類載入的執行順序
那一年,呼延十又回想起被載入順序支配的恐懼,筆試題上,好幾個類,幾個方法,幾個輸出語句,讓你按照順序寫出輸出.我真的是有一句 但是呢,我們還是有了解一下的必要的,在編碼過程中有許多的應用.經常用來比較順序的,無非就是靜態 塊,普通 塊,靜態方法和普通方法.這裡直接說一下結論 先靜態後普通最後構造方法...
Spring bean 載入執行順序例項解析
問題 有乙個bean為a,乙個bean為b。想要a在容器例項化的時候的乙個屬性name賦值為b的乙個方法funb的返回值。如果只是在a裡單純的寫著 private b b private string name b.funb 會報錯說nullpointexception,因為這個時候b還沒被set進...