繼承類的初始化

2022-07-11 14:48:07 字數 709 閱讀 8737

執行時,先訪問main函式。

載入器開始啟動並找出該類的編譯**。

載入時,由於extends知道有乙個基類,於是載入基類。如果基類仍舊有基類,那麼再載入。

直到所有的基類載入完畢。

很重要的一點是static方法是在載入類的時候就被執行了,而static域也在此時也會在此時進行初始化。

所有的類載入完畢。開始建立物件。

物件中所有的基本型別會被設定為預設值。

然後會執行非靜態**塊進行初始化。

最後呼叫構造器。(注意,基類構造器會在構造器中優先執行。)

其實很重要的是這個過程分了兩部分,乙個是載入編譯**,另乙個是初始化,而且載入編譯**早於初始化進行。

不論是static域、static方法還是靜態**塊,都是在載入class檔案的時候執行的。

非原始碼,原始碼請移步:

結果:

這個真的是很簡單的例子了,但是卻能反應上邊所說的大部分情況(無靜態**塊和非靜態**塊),按照上邊的規則來其實是很好理解的。

如有不足,歡迎指出!

類的繼承和類的初始化

父類 子類 class a para1 para def init self,name,name1 self.name name self.name1 name1 def function1 self print function1 def functon2 self print function2...

c 中成員物件初始化和類繼承初始化

對於繼承的物件,建構函式在成員初始化列表中使用類名來呼叫特定的基類建構函式。對於成員物件,建構函式則使用成員名。例如 ifndef h frabjous define h frabjous include class frabjous virtual void tell gloam gloam in...

繼承與初始化

當存在繼承的情況時,各變數的初始化情況變得更為複雜了 不關區域性變數的事 我們有必要梳理一下。class insect private static int x1 printinit static insect.x1 initialized public int x2 printinit shape...