靜態變數,靜態塊(按文字順序載入)->非靜態變數,非靜態塊(按文字順序載入)->構造器
(靜態)塊不能在(靜態)變數宣告之前應用它。
對於繼承關係中的類的初始化:
父類靜態變數,父類靜態塊
->子類靜態變數,子類靜態塊
->父類非靜態變數,父類非靜態塊
->父類構造器
->子類非靜態變數,子類非靜態塊
->子類構造器
如果在靜態塊中呼叫靜態方法,在載入時會先執行靜態方法,再繼續載入。
所有方法都是被呼叫後才會被載入。
class inferior extends test
string str2 = "inferior non-static string";
public inferior()
}public class test
string str2 = "superior non-static string";
public test()
public static void main(string args)
}輸出:
superior static string
inferior static string
superior non-static string
superior constructor
inferior non-static string
inferior constructor
變數初始化順序及類的載入順序
綜合 先載入類 靜態欄位及靜態 塊 若有則執行主函式main 預設初始化域 執行構造方法 隱式初始化域和 塊,再執行構造器的主體 呼叫方法 4 執行子類的建構函式,建構函式來執行初始化。其中子類的建構函式 第一件事是呼叫基類的建構函式。第二件事是 隱式初始化域和 塊 接著才是執行構造器的主體。子類的...
java類的載入以及初始化順序
類的載入和初始化的了解對於我們對程式設計的理解有很大幫助,最近在看類的記載方面的問題。從網上查閱了若干文章,現總結如下 我們通過一段 來了解類載入和初始化的順序 package com.classloader.demo class insect private int p print insect....
java類的載入以及初始化順序
類的載入和初始化的了解對於我們對程式設計的理解有很大幫助,最近在看類的記載方面的問題。從網上查閱了若干文章,現總結如下 我們通過一段 來了解類載入和初始化的順序 package com.classloader.demo class insect private int p print insect....