C++隨筆-類繼承::繼承基類接口

“繼承基類方法接口的含義”

首先,類方法分爲實現與接口。所謂方法接口,是用於描述類內與類外交互的途徑,因此,只有能夠在類外,通過類對象直接對類方法進行調用,才能稱爲繼承了接口。

 

公有繼承與私有繼承

公有繼承:基類方法將被添加進派生類的公有部分,成爲派生類的公有方法,因此可以通過派生類對象對繼承的基類方法進行調用。因此在公有繼承機制下,派生類繼承了基類的接口,爲is-a關係的一部分。

私有繼承:基類方法將被添加進派生類的私有部分,成爲派生類的私有方法,因此不可以通過派生類對象對繼承的基類方法進行調用。因此在私有繼承機制下,派生類不繼承基類的接口,爲has-a關係的一部分。

無論是公有繼承還是私有繼承,派生類都繼承了基類的方法實現,因此都可以在派生類作用域內調用基類方法,例如在派生類方法定義中。

 

派生類繼承基類

繼承將把基類對象作爲一個未命名的繼承對象添加進派生類中,具體將基類的public、private、protected公有、私有、保護部分分別添加進派生類的哪個部分,取決於採取的繼承機制(公有繼承、私有繼承、保護繼承)。對於繼承的對象,可以用術語子對象來表示。這也側面體現了通過繼承方式,基類與派生類之間的存在關係。

基類是以一個未命名的繼承對象的形式被添加進派生類中,注意,一是以對象,即整體的形式被添加進派生類中的,二是未命名

如果是在私有繼承機制下(基類的成員被添加進派生類的私有部分,基類接口不被繼承)或基類方法被添加進派生類的私有部分,要在派生類方法中繼承的基類繼承對象的方法進行調用,則需要採用基類名稱作用域解析運算符來顯式地調用,此時能夠體現繼承的基類對象是以整體的形式存在於派生類對象中的。如果要訪問派生類中的基類對象(子對象、未命名的繼承對象),則可以使用強制轉換的方式,將派生類對象通過強制轉換轉換得到基類對象。而在派生類內,要訪問派生類對象只需要使用this指針即可輕鬆實現。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章