子類繼承父類時建構函式的相關問題

2022-07-01 01:36:15 字數 1259 閱讀 1813

子類物件中包含乙個父類物件在子類物件在建立過程中,先呼叫父類構造方法(先建立出內建的父類物件),然後再建立出自己的物件。所以子類構造時,會先呼叫父類的構造方法,如果你在子類構造方法中不顯示指明呼叫父類的哪個構造方法,系統會給你預設加上super()。這時父類必須有乙個無參的構造方法,不然會報錯。

其實咋寫都不重要,構造嘛,無非就是對類中的變數那些進行初始化,你需要對裡面的變數初始化,你就把它放到構造方法中。

畢竟你不寫,變數也會有預設值。構造方法,無非提供了乙個初始化類中變數值的途徑。

設父類有可訪問的成員屬性m個

反正會先呼叫父類的構造方法

形參乙個兩個三個還是多少個都不重要,怎麼賦值取決於你構造方法的方法體裡面進行的操作(未初始化的成員變數會有預設值(區域性變數需要顯示賦初值))。

eg:子類構造方法裡面傳遞三個引數

1.你可以選擇將str賦值給父類屬性,num1與num2賦值給自己。

//子類son的構造方法

son(string str,int num,char ch)

2.你也可以選擇將str和num賦值給父類,char賦值給自己。

//子類son的構造方法2

son(string str,int num,char ch)

所以說,我們只需要記得子類構造方法必定會呼叫父類的構造方法,至於各種屬性的賦值,都是由方法內部決定的,而不是形參位置、數量等決定。

class father 

​father(string str) }​

class son extends father

​son(string str)

​son(string str, int num) }​

public class test

}

輸出結果:

父類有參構造方法

子類有參構造方法2

dd,null,0,22

-------------------------------

父類無參構造方法

子類有參構造方法1

null,yy,0,0

alt+7可以看到son類從father類繼承過來兩個屬性。

子類繼承父類,必須宣告父類的建構函式

class entity def init self,object type print parent class init called self.object type object type def get context length self raise exception get con...

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

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

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

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