類的繼承與派生
類的繼承,是新的類從已有類那裏得到已有的特性。從另一個角度來看這個問題,從已有類產生新類的過程就是類的派生。
原有的類稱爲基類或父類,產生的新類稱爲派生類或子類。 一個派生類可以同時有多個基類,這種情況就稱爲多繼承;一個派生類只有一個直接基類的情況,稱爲單繼承。
在派生的過程中 ,派生出來的新類也同樣可以作爲基類再繼續派生新的類,此外,一個基類可以派生出多個派生類。在類族中,直接參與派生出某類的基類稱爲直接基類,基類的基類甚至更高層的基類稱爲間接基類。
派生類成員是指除了從基類繼承來的所有成員之外,新增加的書據和函數成員。
派生新類的過程實際上經歷了3個步驟:吸收基類成員、改造基類成員、添加新的成員。
1.吸收基類成員:派生類實際上就包含了它的全部基類中除構造和析構函數之外的所有成員。即在派生過程中,構造函數和析構函數都不被繼承。
2.改造基類成員:包括兩個方面,(1)基類成員的訪問控制問題,主要依靠派生類定義時的繼承方式來控制(2)基類數據或函數成員的覆蓋或隱藏。如果派生類聲明瞭一個和某基類成員同名的新成員(如果是成員函數,則參數表也要相同,參數不同的情況屬於重載),派生的新成員就隱藏了外層同名成員。這時在派生類中或者通過派生類的對象,直接使用成員名就只能訪問到派生類中聲明的同名成員,這稱作同名隱藏。
3.添加新的成員:派生類新成員的加入是繼承與派生機制的核心,是保證派生類在功能上有所發展的關鍵。由於在派生過程中,基類的構造函數和析構函數不能被繼承,因此實現一些特別的初始化和掃尾清除工作,就需要在派生類中加入新的構造和析構函數。
訪問控制
類的繼承方式有public(公有繼承)、protected(保護繼承)、private(私有繼承)三種。不同的繼承方式,導致原來具有不同訪問屬性的基類成員在派生類中的訪問屬性也有所不同。這裏的訪問來自兩個方面:一是派生類中的新增成員訪問從基類繼承的成員。而是在派生類外部,通過派生類的對象訪問從基類繼承的成員。
(1)公有繼承:當類的繼承方式爲公有繼承時,基類的公有成員和保護成員的訪問屬性在派生類中不變,而基類的私有成員不可直接訪問。
(2)保護繼承:保護繼承中,基類的公有成員和保護成員都以保護成員的身份出現在派生類中,而基類的私有成員不可直接訪問。
(3)私有繼承:當類的繼承方式爲私有繼承時,基類的公有成員和保護成員都以私有成員的身份出現在派生類中,而基類的私有成員在派生類中不可直接訪問
繼承與派生
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
vmware使用筆記
phf20081988
2018-08-27 14:54:20
std::cout 與 cout 有什麼區別 // cout有些時候爲什麼前面要加std
无知无为
2018-08-27 12:37:11
std::endl 有什麼作用
无知无为
2018-08-27 12:37:11
CString 操作指南
ha14141024
2018-08-27 11:48:25
條件編譯#if語句
ha14141024
2018-08-27 11:48:22
C++中L和_T()之區別
ha14141024
2018-08-27 11:48:22
Win32 API∶繪圖函數
dangerb
2018-08-27 11:36:37
C++基礎知識:C++容器類vector實踐
dangerb
2018-08-27 11:36:37
C++中的抽象類和接口
码_sick
2018-08-27 07:59:42
C++中邏輯操作符的陷阱
码_sick
2018-08-27 07:59:42