1. 程式人生 > >類的構建和繼承機制(c++)

類的構建和繼承機制(c++)

三種 ges cnblogs private 有一個 只有一個 public 改變 帶來

構建類:

抽象:將同類事物的共同屬性和行為提取出來並將其用變量和函數表達出來;

封裝:將抽象得來的變量和函數捆綁在一起形成一個完整的類(即這類事物擁有了屬性和行為)

控制訪問權限:

private: 除了在該類中可以直接訪問到之外,外界以及派生類均不能直接訪問其成員;

protected: 在該類和其派生類中可以直接訪問到其成員,外界不能直接訪問到;

public: 除了在該類和其派生類中可以直接訪問到其成員,外界也能直接訪問;

如下創建一個類:

技術分享

構造出學生類之後,便可以創建學生對象:

Student stdChen("Chen Yun");

Student stdLin("Lin Fan") 等;

封裝好的類可以通過特定的 public 接口向外提供服務,故只要知道服務接口,便可以對類進行使用。

C++ 的繼承機制:基類和派生類實現繼承

不同類別的事物可能擁有一些相同的屬性和行為,例如老師與學生都擁有姓名,性別,年齡等屬性,並且擁有走路,交談,看書等行為,為什麽呢,因為無論是老師還是學生,都是人類的一個子類,所以他們都擁有人類的屬性和行為。其中,人類稱為父類,也稱為基類;老師類和學生類稱為子類,也叫做派生類。所以,老師類和學生類只需要繼承人類的屬性和行為(不需要寫重復代碼),再增加自身類的特有屬性和行為即可。

c++ 派生類聲明方式如下:

class 派生類名:繼承方式 基類名1, 繼承方式 基類名2...

{

// 派生類新增加的屬性和行為...

}

由以上聲明方式可知,一個派生類可以同時繼承多個類。如果只有一個基類,稱為單繼承;否則稱為多繼承,此時派生類可同時獲得多個基類特征。但是,多繼承可能帶來成員的二義性:當兩個基類擁有同名的成員,那麽派生類將繼承得到兩個同名成員,因此訪問派生類該成員時將導致程序的二義性,使用的時候要多加註意。

與類的訪問控制類似,繼承方式也有 public,protected,private 三種,繼承方式決定了派生類如何訪問從基類繼承下來的成員:

(1)public:

public 繼承被稱為類型繼承。基類中的公有和保護類型成員連通器訪問級別直接遺傳給派生類,不做改變。並且派生類 is-a 基類,例如 Student is a Human。

(2)protected:

protected 繼承把基類的公有和保護類型成員變成派生類的 protected 類型成員,使得基類的公有接口不被曝露給外界,自身以及其派生類卻可以通過其訪問到繼承下來的成員。

(3)private:

private 繼承被稱為實現繼承,基類的公有和保護成員都變成自身的 private 類型成員,因此,其派生類和外界不能支持基類的 public 接口,只是可以重用基類的實現而已。

A類 is a B類:使用 public 繼承

A類 has a B類:不使用繼承,而將B類作為A類的一個成員使用。

類的構建和繼承機制(c++)