java修飾符作用范圍 子類可以繼承父類中的構(gòu)造函數(shù)嗎?
子類可以繼承父類中的構(gòu)造函數(shù)嗎?是的。class Parent(){public Parent(){系統(tǒng)輸出打印(“parent 1”)}公共父(字符串n){系統(tǒng)輸出打?。ā皃arent 2”n)}類
子類可以繼承父類中的構(gòu)造函數(shù)嗎?
是的。
class Parent(){public Parent(){系統(tǒng)輸出打?。ā皃arent 1”)}公共父(字符串n){系統(tǒng)輸出打?。ā皃arent 2”n)}類子擴(kuò)展parent(){public parent(){super()/*此行可以注釋*/系統(tǒng)輸出打?。ā癈hild 1”)}公共父(字符串n){超級(n)系統(tǒng)輸出打印(“Child 2”n)}公共父級(int n){系統(tǒng)輸出打?。ā癱hild 3”n)}
父類中有構(gòu)造函數(shù)子類繼承時(shí)必須定義子類的構(gòu)造方法嗎?
這取決于具體情況,
1。如果父類沒有定義參數(shù)化構(gòu)造函數(shù)(或者有參數(shù)化構(gòu)造方法,但沒有參數(shù)化構(gòu)造方法),則子類不需要顯式定義構(gòu)造方法。
2. 如果父類顯式定義了參數(shù)化構(gòu)造方法,但沒有顯示無參數(shù)構(gòu)造方法,則子類必須顯式定義參數(shù)化構(gòu)造方法,并使用super(XX)在構(gòu)造方法中顯式調(diào)用父類的參數(shù)化構(gòu)造方法
1。根據(jù)面向?qū)ο罄^承的概念,子類繼承父類的所有屬性和方法。
2. 因?yàn)闃?gòu)造函數(shù)非常特殊,調(diào)用它就像調(diào)用C函數(shù),而不是使用對象。
3. 如您所見,在Java中,您可以使用super關(guān)鍵字訪問這個(gè)類的父類的構(gòu)造方法。證明了子類繼承了Java中父類的構(gòu)造方法,子類可以通過super訪問父類的構(gòu)造方法,只要父類的構(gòu)造方法不是私有的。
子類繼承父類的構(gòu)造函數(shù)(方法)嗎?
在C中,構(gòu)造函數(shù)不會(huì)自動(dòng)繼承。如果子類沒有編寫構(gòu)造函數(shù),系統(tǒng)會(huì)自動(dòng)向類中添加一個(gè)默認(rèn)構(gòu)造函數(shù),該類是一個(gè)空函數(shù)體,因此不會(huì)執(zhí)行任何操作。然后它將調(diào)用父類的構(gòu)造函數(shù),因此您會(huì)覺得它繼承了父類的構(gòu)造函數(shù)。
子類和父類的構(gòu)造函數(shù)的調(diào)用順序:
類B:public AB B1
那么構(gòu)造函數(shù)的調(diào)用順序是:a(),B()
如果不想調(diào)用基類的構(gòu)造函數(shù),應(yīng)該在子類中編寫一個(gè)構(gòu)造函數(shù)。
C 子類會(huì)無條件繼承父類的構(gòu)造函數(shù)么?
你的老師是對的,但我說不清楚。我舉個(gè)例子。類a{public a(){}//1:無參數(shù)構(gòu)造方法。Public a(string s){}//2.}類B擴(kuò)展了a{Public B(string s){super(s)//3.}注意:如果位置1中沒有無參數(shù)構(gòu)造方法,則必須在位置3中主動(dòng)調(diào)用具有父類參數(shù)的構(gòu)造方法。如果有一個(gè)構(gòu)造方法,那么這三個(gè)代碼可以省略,因?yàn)槟J(rèn)情況下Java會(huì)自動(dòng)調(diào)用父類的無參數(shù)構(gòu)造方法。請記住,在構(gòu)造子類時(shí),必須調(diào)用父類的構(gòu)造函數(shù)。所以父類或者有一個(gè)默認(rèn)的無參數(shù)構(gòu)造,所以Java會(huì)自動(dòng)調(diào)用這個(gè)無參數(shù)構(gòu)造。如果父類沒有無參數(shù)構(gòu)造,則需要在子類的構(gòu)造中通過super()調(diào)用父類的構(gòu)造。