在類被繼承的情況下,初始化的順序:
1.初始化子類,類加載器在加載它的時候會發現它繼承了另外一個類,類加載器要先把父類加載進來。於是開始加載父類,父類的靜態部分被按順序加載。之後子類的靜態部分被加載。這樣的順序是考慮子類的靜態域可能會依賴父類的靜態域;
2.父類的非靜態部分被加載;
3.子類指定的父類的構造器;
4.子類的非靜態部分被加載;
5.子類構造器的其餘部分。
結果爲:
Cat static 2
Cat static block
Tiger static 4
Tiger static block
Tiger unstatic 1 //特別注意,這裏是多態構造
Cat unstatic block
new Cat()
Tiger unstatic 3
Tiger unstatic block
new Tiger()