5 繼承與派生

2021-08-28 11:23:22 字數 1169 閱讀 6343

通過繼承已有類的部分或者全部成員,建立新類的過程稱為派生,繼承是物件導向程式設計的特點之一。

定義:若定義類a時,使用了已有類b的部分或全部成員,則類a繼承了類b,成類b為基類或父類,成類a為派生類或子類。

乙個派生類又可作為另乙個類的基類,乙個基類也可派生出若干個派生類,這樣就構成類樹,或類族。

從 已有類派生新類時,可對派生類做以下變化:

全部或部分繼承基類的成員資料或成員函式

增加新成員變數增加新成員函式

重定義基類的成員函式

改變現有的成員屬性

c++中繼承分為單一繼承和多重繼承。當派生類巨集僅有乙個基類時,成為單一繼承。否則為多重繼承。

從乙個基類派生乙個類的格式:

class classname:baseclassname

;

access為public,private,protected之一。

5.1.1.1 公有派生

公有派生時,基類中所有成員在公有派生類中保持各個成員的原有訪問許可權。

基類的public成員,在派生類中仍為public

基類的private成員,在派生類中仍為private成員。派生類不能直接使用基類中的私有成員,只能通過該基類公有的或保護的成員函式間接使用基類中的私有成員。

protected成員,在派生類中可直接使用它們,但在派生類外,不可直接訪問這些成員,必須通過派生類的公有成員函式或基類的公有成員函式才能訪問。

5.1.1.2 私有派生

基類中公有成員和保護成員在派生類中均變為私有的,但在派生類中仍可直接使用這些成員。

在派生類外均不可直接使用基類的公有或私有成員,這些成員必須通過派生類中的公有成員函式來間接使用,對於基類的私有成員不可直接使用。

若乙個類不能定義物件而只能做基類來派生新類,成為抽象類。

作用:

若該類的建構函式或析構函式的訪問許可權為protected,則此類為抽象類。因在定義此類的物件時,在類外要呼叫該類的建構函式,而其是私有的。但在公有派生類中,可呼叫保護成員。

含有純虛函式的類為抽象類

若把類中的建構函式或析構函式說明為private,這樣的類毫無意義,因為不能產生物件,也不能產生派生類。

格式:

class 類名:類名1,...類名 n

實驗5 繼承與派生

sy5 1.cpp include using namespace std class a intgeta public int a class b public a intgetb void show public int b int main a,公有成員函式seta 和geta 作為派生類b的...

派生與繼承 多重派生

1 理解下面的程式,並在 vc 6.0 下執行檢視結果,回答程式後面的問題。class cbase1 cbase1 void print protected int a class cbase2 cbase2 void print protected int b class cderive publ...

繼承與派生

實驗內容 建立乙個基類,兩個派生類,讓每乙個派生類都包含乙個函式area 分別用來返回矩形和三角形的面積。用建構函式對height和width進行初始化。要求通過基類指標訪問虛函式的方法。純虛函式 virtual double area 0 純虛函式的作用是在基類中為派生類保留乙個函式的名字,以便派...