繼承與派生

2021-06-26 23:03:46 字數 1178 閱讀 8013

類的繼承與派生

類的繼承,是新的類從已有類那裡得到已有的特性。從另乙個角度來看這個問題,從已有類產生新類的過程就是類的派生。

原有的類稱為基類或父類,產生的新類稱為派生類或子類。 乙個派生類可以同時有多個基類,這種情況就稱為多繼承;乙個派生類只有乙個直接基類的情況,稱為單繼承。

在派生的過程中 ,派生出來的新類也同樣可以作為基類再繼續派生新的類,此外,乙個基類可以派生出多個派生類。在類族中,直接參與派生出某類的基類稱為直接基類,基類的基類甚至更高層的基類稱為間接基類。

派生類成員是指除了從基類繼承來的所有成員之外,新增加的書據和函式成員。

派生新類的過程實際上經歷了3個步驟:吸收基類成員、改造基類成員、新增新的成員。

1.吸收基類成員:派生類實際上就包含了它的全部基類中除構造和析構函式之外的所有成員。即在派生過程中,建構函式和析構函式都不被繼承。

2.改造基類成員:包括兩個方面,(1)基類成員的訪問控制問題,主要依靠派生類定義時的繼承方式來控制(2)基類資料或函式成員的覆蓋或隱藏。如果派生類宣告了乙個和某基類成員同名的新成員(如果是成員函式,則參數列也要相同,引數不同的情況屬於過載),派生的新成員就隱藏了外層同名成員。這時在派生類中或者通過派生類的物件,直接使用成員名就只能訪問到派生類中宣告的同名成員,這稱作同名隱藏。

3.新增新的成員:派生類新成員的加入是繼承與派生機制的核心,是保證派生類在功能上有所發展的關鍵。由於在派生過程中,基類的建構函式和析構函式不能被繼承,因此實現一些特別的初始化和掃尾清除工作,就需要在派生類中加入新的構造和析構函式。

訪問控制

類的繼承方式有public(公有繼承)、protected(保護繼承)、private(私有繼承)三種。不同的繼承方式,導致原來具有不同訪問屬性的基類成員在派生類中的訪問屬性也有所不同。這裡的訪問來自兩個方面:一是派生類中的新增成員訪問從基類繼承的成員。而是在派生類外部,通過派生類的物件訪問從基類繼承的成員。

(1)公有繼承:當類的繼承方式為公有繼承時,基類的公有成員和保護成員的訪問屬性在派生類中不變,而基類的私有成員不可直接訪問。

(2)保護繼承:保護繼承中,基類的公有成員和保護成員都以保護成員的身份出現在派生類中,而基類的私有成員不可直接訪問。

(3)私有繼承:當類的繼承方式為私有繼承時,基類的公有成員和保護成員都以私有成員的身份出現在派生類中,而基類的私有成員在派生類中不可直接訪問

派生與繼承 多重派生

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 純虛函式的作用是在基類中為派生類保留乙個函式的名字,以便派...

繼承與派生

在c 中,所謂 繼承 就是在乙個已存在的類的基礎上建立乙個新的類。已存在的類成為 基類 新建立的類成為 派生類 乙個新類從已有的類那裡獲得其已有特性,這種現象成為累的繼承。從另一角度說,從已有的類產生乙個新的子類,稱謂累的派生。派生類的宣告方式 class 派生類名 繼承方式 基類名 派生類新增加的...