C 學習 繼承

2021-10-21 21:31:44 字數 2562 閱讀 5382

物件導向程式設計中最重要的乙個概念是繼承。繼承允許我們依據另乙個類來定義乙個類,這使得建立和維護乙個應用程式變得更容易。這樣做,也達到了重用**功能和提高執行效率的效果。

當建立乙個類時,您不需要重新編寫新的資料成員和成員函式,只需指定新建的類繼承了乙個已有的類的成員即可。這個已有的類稱為基類,新建的類稱為派生類。

繼承代表了is a關係。

例如,人是乙個基類(也稱父類),男人即為人的派生類(也稱子類);即「男人是人」。

**可以這樣表示:

// 基類

class

people

;//派生類

class

man:

public people

;

乙個類可以派生自多個類,這意味著,它可以從多個基類繼承資料和函式。定義乙個派生類,我們使用乙個類派生列表來指定基類。類派生列表以乙個或多個基類命名。

假設有乙個基類 shape,rectangle 是它的派生類,如下所示:

#include

using namespace std;

// 基類

class shape

void

setheight

(int h)

protected:

int width;

int height;};

// 派生類

class rectangle: public shape};

intmain

(void

)

當上面的**被編譯和執行時,它會產生下列結果:

total area: 35

派生類可以訪問基類中所有的非私有成員。因此基類成員如果不想被派生類的成員函式訪問,則應在基類中宣告為 private。

我們可以根據訪問許可權總結出不同的訪問型別,如下所示:

乙個派生類繼承了所有的基類方法,但下列情況除外:

基類的建構函式、析構函式和拷貝建構函式。

基類的過載運算子。

基類的友元函式。

當乙個類派生自基類,該基類可以被繼承為 public、protected 或 private 幾種型別。繼承型別是通過訪問修飾符 access-specifier 來指定的。

我們幾乎不使用 protected 或 private 繼承,通常使用 public 繼承。當使用不同型別的繼承時,遵循以下幾個規則:

公有繼承(public):當乙個類派生自公有基類時,基類的公有成員也是派生類的公有成員,基類的保護成員也是派生類的保護成員,基類的私有成員不能直接被派生類訪問,但是可以通過呼叫基類的公有和保護成員來訪問。

保護繼承(protected): 當乙個類派生自保護基類時,基類的公有和保護成員將成為派生類的保護成員

私有繼承(private):當乙個類派生自私有基類時,基類的公有和保護成員將成為派生類的私有成員

多繼承即乙個子類可以有多個父類,它繼承了多個父類的特性。

c++ 類可以從多個類繼承成員,語法如下:

class 《派生類名》:《繼承方式1>《基類名1>,《繼承方式2>《基類名2>,…

;

其中,訪問修飾符繼承方式是 public、protected 或 private 其中的乙個,用來修飾每個基類,各個基類之間用逗號分隔,如上所示。現在讓我們一起看看下面的例項:

#include

using

namespace std;

// 基類 shape

class

shape

void

setheight

(int h)

protected

:int width;

int height;};

// 基類 paintcost

class

paintcost};

// 派生類

class

rectangle

:public shape,

public paintcost};

intmain

(void

)

繼承重要說明:

1、子類擁有父類的所有成員變數和成員函式

2、子類就是一種特殊的父類

3、子類物件可以當作父類物件使用

4、子類可以擁有父類沒有的方法和屬性

C 學習 繼承

基類和派生類 class cderived public cbase 基類 派生類public繼承 public成員 public處理 protected成員 protected處理 private成員 不可訪問 protected繼承 public成員 protected處理 protected成...

C 繼承學習筆記

派生類從基類繼承了保護 protected 成員和公有 public 成員函式,但是繼承不了基類的過載建構函式。定義乙個如下基類 class counter counter operator counter n void reset int getcount int getnum counter c...

C 學習筆記 繼承

一 c 中的繼承方式會影響子類的對外訪問屬性 public 修飾的成員變數 方法 在類的內部 類的外部都能使用 protected 修飾的成員變數方法,在類的內部使用,在繼承的子類中可用 private 修飾的成員變數方法,只能在類的內部使用 二 private成員在子類中依然存在,但是卻無法訪問到...