這篇博文對c++的繼承和派生將的非常好。
在c++中,所謂「繼承」就是在乙個已存在的類的基礎上建立乙個新的類。已存在的類稱為「基類(base class)」或「父類(father class)」,新建的類稱為「派生類(derived class)」或「子類(son class )」。
乙個新類從已有的類那裡獲得其已有特性,這種現象稱為類的繼承。通過繼承,乙個新建子類從已有的父類那裡獲得父類的特性。從另一角度說,從已有的類(父類)產生乙個新的子類,稱為類的派生。
乙個派生類不僅可以從乙個基類派生,也可以從多個基類派生。也就是說,乙個派生類可以有乙個或者多個基類。乙個派生類有兩個或多個基類的稱為多重繼承(multiple inheritance)。關於基類和派生類的關係,可以表述為派生類是基類的具體化,而基類則是派生類的抽象。
使程式的設計更符合發展規律,即事物的發展是乙個從低階到高階的發展過程,類的繼承也是反映由原始的簡單**到豐富的高階**的過程。它能幫助我們描述事物的層次關係,有效而精確的理解事物,理解事物直到本質。
(1)繼承使類與類之間建立起一種上下級的層次關係
(2)子類可以重複使用父類的操作和資料成員,子類可以宣告新的屬性和操作,還可以剔除不適合自己用途的父類操作。
原因:為了提高**復用率,縮短程式開發成本
1、繼承基類的資料成員:將基類成員全盤吸收
2、增加新的資料成員、改變現有成員的屬性:不同方式繼承 + 宣告乙個同名成員,使用重寫覆蓋技術
3、重新定義已有成員函式
針對派生類而言,根據基類的個數分:單繼承 + 多繼承
單繼承:派生類的基類只有乙個
三種繼承方式:公有繼承(public),私有繼承(private),保護繼承(protected)
繼承後訪問屬性的種類:針對派生類而言,成員可分為:不可訪問成員、私有成員、受保護成員、公有成員
說明:無論是那種派生方式,派生類無法直接使用不可訪問變數的,換句話說,派生類不能訪問基類的私有成員。
具體如圖:
繼承後的法則:
派生類的成員函式訪問基類成員時,
無論是公有、私有、受保護繼承,基類的私有變數均不可訪問,但繼承後屬性為公有、受保護成員均可以直接訪問。
派生類的物件類外訪問基類成員時,
若受保護、私有繼承時,派生類物件均不可訪問基類的成員(無論是哪種訪問屬性)。
若公有繼承,派生類的物件可以訪問基類的公有成員。
一句話:就派生類而言,基類私有變數不可訪問,其他成員的訪問情況,按具體繼承後的屬性而定
根據父親物品的使用權以及繼承,換一種方式理解成員許可權的定義:
父親的東西可以分為幾類,只能是父母知道,子女都不可以知道。子女可以知道,但是外人不可以知道。外人可以知道。
根據分類,給出哪種物品使用哪種許可權限制:
--只能是父母知道,子女都不可以知道:把這部分東西定義為private。
--子女可以知道,但是外人不可以知道:把這部分定義為protected。
--外人可以知道:把這部分內容定義為public
最後根據那些繼承方式,對父類物品的訪問型別進一步約束,形成自己的訪問法則
c 繼承和派生
通常子類不加修飾的延續父類的特徵,我們把它叫做繼承 而子類在延續父類特徵的基礎上又新增自己的新特徵,叫做派生。擁有乙個基類的繼承是單一繼承,擁有多個基類的繼承是多重繼承。class 派生類名 派生型別 基類名 注 括號內是派生類自己的成員和成員函式。乙個類的私有成員只能被它的成員函式和友員訪問,不能...
C 繼承和派生
在c 語言中,乙個 派生類可以從乙個 基類派生,也可以從多個基類派生。從乙個基類派生的繼承稱為單繼承 從多個基類派生的繼承稱為 多繼承。派生類的定義格式 單繼承的定義格式如下 1 2 3 4 class 派生類名 繼承方式 基類名 public 表示公有繼承 private 表示私有繼承 prote...
C 繼承和派生
1 繼承概念 1 繼承是類之間定義的一種重要關係 2 基本語法 class child public parent1,public parent2 3 parent稱基類 父類 child稱派生類 子類 4 繼承方式 public,private,protected.5 重要說明 a 子類擁有父類的...