層次概念是計算機的重要概念。通過繼承(inheritance)的機制可對類(class)分層,提供型別/子型別的關係。c++通過類派生(class derivation)機制來支援繼承。
被繼承的型別稱為基類(base class)或超類(superclass),新產生的類為派生類(derived class)或子類(subclass)。基類和派生類的集合稱作類繼承層次結構(hierarchy)。如果基類和派生類共享相同的公有介面,則派生類被稱作類的子型別(subtype)。
繼承機制體現了現實世界的層次結構,如下圖所示。
派生反映了事物之間的聯絡,事物的共性與個性之間的關係。從工作量上看,工作量少,派生類中重複的部分可以從基類繼承來,不需要再單獨程式設計。
「層次」的獲得:多種考慮,例如類的分解問題(如何把多個類的共同特徵分解到乙個基類中)。
◆1、由基類派生出派生類的語法形式
c++中由基類派生出派生類的語法形式為:
class 派生類名:訪問限定符 基類名1《,訪問限定符 基類名2,……,訪問限定符 基類名n 》
;//分號不可少
其中,基類1,基類2,……是已宣告的類。
在派生類定義的類體中給出的成員稱為派生類成員,它們是新增加的資料和函式成員。這些新增加的成員是派生類對基類的發展,它們給派生類新增了不同於基類的新的屬性和功能。派生類成員包括新新增的,也包括通過遮蔽作用,取代基類成員的更新成員。
◆2、單一繼承和多重繼承
◆3、編制派生類的步驟
編制派生類時可分四步:
吸收基類的成員:不論是資料成員,還是函式成員,除建構函式與析構函式外全盤接收(繼承方式)。
改造基類成員:宣告乙個和某基類成員同名的新成員,該新成員將遮蔽基類同名成員。稱為同名覆蓋(override)
發展新成員:派生類新成員必須與基類成員不同名,它的加入保證派生類在功能上有所發展。
重寫建構函式與析構函式。
說明:
注意:必須規範化地程式設計,除了演算法必須規範化外,程式設計的步驟也必須規範化,上面的步驟就是繼承與派生程式設計的規範化步驟。
派生類定義時的訪問限定符,是指訪問控制,亦稱為繼承方式,用於在派生類中對基類成員進一步的限制。
訪問控制也是三種:公有(public)方式,保護(protected)方式和私有(private)方式,相應的繼承亦稱公有繼承、保護繼承和私有繼承。訪問限定有兩方面含義:
派生類新增成員函式對基類(繼承來的)成員的訪問;
從派生類物件之外對派生類物件中的基類成員的訪問。
下表給出公有派生和私有派生的訪問限制。
公有派生是絕對主流。
C 的公有 保護 私有繼承派生
c 類的成員分為三種屬性分別是公有 保護 私有。三種屬性控制著成員的訪問控制許可權。首先講公有成員。公有成員是其類對外部的介面,任何外部函式都可以訪問公有資料或者函式。其次是保護成員。保護成員是非派生類的外部函式無法訪問保護資料或者函式,對於此類下的派生類可以訪問到此類的保護資料或者函式。最後將私有...
派生與繼承 多重派生
1 理解下面的程式,並在 vc 6.0 下執行檢視結果,回答程式後面的問題。class cbase1 cbase1 void print protected int a class cbase2 cbase2 void print protected int b class cderive publ...
C 繼承與派生
派生新類 吸收已有類的成員 調整已有類成員和新增新的成員 class 派生類名 繼承方式 基類名1,繼承方式 基類名2,派生類成員宣告 繼承方式有 public protected private 預設 公有繼承 基類的公有和保護乘員的訪問屬性在派生類中不變,基類的私有成員不能直接訪問 型別相容規則...