初始化基類 帶引數的構造器

2021-06-26 21:19:46 字數 830 閱讀 1629

當涉及到基類和匯出類兩個類時,對基類子物件的正確初始化也是至關重要的。在構造器中呼叫基類構造器來執行初始化,而基類構造器加油執行基類初始化所需要的所有知識和能力。對於構造器沒有引數(或缺省構造器)過程較為容易理解,但對於帶引數的構造器會有乙個地方值得注意一下

class game

}class boardgame extends game

//implicit super constructor game() is undefined. must explicitly invoke another constructor

//public boardgame(char i){}

}

這個地方基類game裡面有乙個帶引數的建構函式,boardgame繼承了game,這是boardgame裡面的建構函式就有講究了。

如果沒有預設的基類構造器,或者想呼叫乙個帶引數的基類構造器,就必須用關鍵字super顯示地編寫呼叫基類構造器的語句,並且配以適當的引數列表。

就像上面的例子必須要有那個建構函式,否則就會報錯。就算是自己寫乙個帶引數的建構函式,但是引數不一樣的話也不行,還有沒有那個super也不行。

如果不這樣做會報出

implicit super constructor game() is undefined. must explicitly invoke another constructor

構造器初始化

構造器初始化 1.初始化順序 即使變數定義分散於方法定義之間,它仍會在任何方法 包括構造器 被呼叫之前得到初始化。變數定義的先後順序決定了初始化的順序 例 package clear class window class house window w2 new window 2 void f win...

虛擬基類的初始化

無論虛擬基類出現在繼承層次中的哪個位置上,它們都是在非虛擬基類之前被構造 虛擬基類的初始化成了最末層繼承類的責 namespace ex18 15 base string base const base protected string name class derived1 virtual pub...

虛基類的初始化

使用虛基類時,虛基類時被共享的,也就是在繼承體系中無論被繼承多少次,物件記憶體模型中均只會出現乙個虛基類的子物件,即使共享虛基類。但是必須要有乙個類來完成基類的初始化,同時還不能夠重複進行初始化。c 標準中選擇在每一次繼承子類中都必須書寫初始化語句,但是虛基類的初始化是由最後的子類完成,其他的初始化...