繼承與派生(第三天)

標題標題繼承與派生(第三天)

1.繼承:新的類(派生類)從已有類(基類)那裏得到已有的特性,繼承了各種成員的關係,根據派生類所擁有的基類數目不同,分爲單繼承和多繼承.基類與派生類的關係如下:
(1)基類是對派生類的抽象,派生類是對基類的具體化。
(2)派生類是基類的組合;
(3)公有派生類的對象可以作爲基類的對象處理。
2.派生類的定義格式:
class<派生類名>:<繼承方式1><基類名1>,
<繼承方式2><基類名2>,
…,
<繼承方式n><基類名n>,
{
<派生類新定義成員>
}
繼承方式有三種:公有繼承(public);私有繼承(private);保護繼承(protected)
3.派生類對基類成員的訪問

公有繼承	私有繼承	保護繼承

私有成員 × × ×
公有成員 √ √(私) √(保)
保護成員 √ √(私) √
4.派生類的構造函數
一半格式爲:<派生類名>::<派生類名>(總參數表):<基類名1>(參數表1),
<基類名2>(參數表2),
…,
<基類名n>(參數表n)
{
<派生類構造函數體>
}
執行順序如下:
(1)調用基類的構造函數對基類的數據成員進行初始化,調用順序按照各個基類被繼承時聲明的順序(自左向右);
(2)對新增成員進行初始化,執行順序按照各個成員在類中聲明的順序(自上而下);
(3)執行派生類的構造函數體。
注意:執行順序析構函數與構造函數完全相反。
5.二義性的解決:
(1)通過作用域運算符(::)明確指出訪問的基類,一般格式爲:
<對象名>.<基類名>::<成員名> //數據成員
<對象名>.<基類名>::<成員名> //成員函數
(2)在類中定義同名成員。
例如:class derived
{
Public:
Void fun() {Base1::fun();}
//或者 Base1::fun()
};
6.虛基類
(1)定義:當一個派生類從多個基類派生,而這些基類又有一個共同的基類,當對該基類進行訪問時,可能出現二義性,所以提出來虛基類;
格式:class<類名>:virtual<繼承方式><基類名>

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