子類與父類建構函式的執行關係

2021-09-21 06:54:21 字數 855 閱讀 2148

對引用1中的**做了部分修改,同時借鑑引用2的結論。

public abstract class myclass 

public static void main(string args)

public abstract void initvalue();

public void show()

class man extends myclass

@override

public string tostring()

}

執行結果:

name:qiujuer age:23

show:name:聶小倩 age:18

結論:當例項化子類物件時,首先要載入父類的class檔案進記憶體,靜態**塊由於有static修飾, 所以是隨著類的建立而執行,所以父類靜態**塊最先被執行,子類class檔案再被載入,同理靜 態**塊被先執行;例項化子類物件要先呼叫父類的構造方法,而呼叫父類構造方法前會先執行 父類的構造**塊,因此就有如下順序:

父類靜態**塊——>子類靜態**塊——>父類構造塊——>父類構造方法——>子類構造 塊——>子類構造方法

其中,在父類構造方法中若呼叫一般方法且被子類覆蓋,則執行的是子類中的方法,同時, 成員的初始化順序為:

子類屬性預設初始化 ——>父類建構函式初始化(子類建構函式第一行預設呼叫super();)——>子類屬性顯示初始化(指定初始化值)——>子類建構函式初始化

如有問題還請指正!

引用1:

引用2:

父類建構函式與子類建構函式的關係

父類 public class parent public void setname string name public parent public parent string name 子類 public class son extends parent public son string na...

C 子類父類建構函式的關係

構造方法用來初始化類的物件,與父類的其它成員不同,它不能被子類繼承 子類可以繼承父類所有的成員變數和成員方法,但不繼承父類的構造方法 因此,在建立子類物件時,為了初始化從父類繼承來的資料成員,系統需要呼叫其父類的構造方法。如果沒有顯式的建構函式,編譯器會給乙個預設的建構函式,並且該預設的建構函式僅僅...

父類建構函式 子類建構函式

1.子類可以通過super關鍵字來顯式地呼叫父類的建構函式。2.當父類沒有提供無引數的建構函式時,子類也不可以有無參建構函式,且子類的建構函式中必須顯式的呼叫父類的建構函式 3.如果父類提供了無引數的建構函式,此時子類的建構函式就可以不顯式的呼叫父類的建構函式,預設呼叫父類的無參建構函式。4.只要父...