派生類從基類繼承了什么 父類中有構(gòu)造函數(shù)子類繼承時必須定義子類的構(gòu)造方法嗎?
父類中有構(gòu)造函數(shù)子類繼承時必須定義子類的構(gòu)造方法嗎?這取決于具體情況。1。如果父類沒有定義參數(shù)化構(gòu)造函數(shù)(或者有參數(shù)化構(gòu)造方法,但沒有參數(shù)化構(gòu)造方法),則子類不需要顯式定義構(gòu)造方法。2. 如果父類顯式
父類中有構(gòu)造函數(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)造方法
在C中,構(gòu)造函數(shù)不會自動繼承,但是如果子類沒有寫構(gòu)造函數(shù),那么系統(tǒng)會自動給這個類添加一個默認的構(gòu)造函數(shù),這個類是一個空的函數(shù)體,所以什么都不做,然后調(diào)用父類的構(gòu)造函數(shù),所以你認為它繼承了父類的構(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òu)造函數(shù)。
C 子類會無條件繼承父類的構(gòu)造函數(shù)么?
不,因為當子類繼承父類時,它將首先運行父類的構(gòu)造函數(shù);特別是,當運行父類時,它將首先“調(diào)用”父類的構(gòu)造函數(shù)。請注意,“調(diào)用”和繼承的含義不同,但本質(zhì)上是“自動運行”。事實上,外延的含義是“外延”。子類沒有必要擴展其父類的構(gòu)造函數(shù),因為在任何情況下,每次調(diào)用子類時,其父類的構(gòu)造函數(shù)都會“自動運行”。如果您真的需要一種特殊形式的子類構(gòu)造函數(shù),子類將直接修改或重載它自己的構(gòu)造函數(shù)。估計你不懂“構(gòu)造器”的意思。調(diào)用類有兩種方法:繼承和組合。當你調(diào)用一個類時,它會自動運行它的“構(gòu)造函數(shù)”。