C 私有 保護 公有繼承

2021-06-06 10:13:01 字數 2211 閱讀 5241

一、公有(pulic)繼承

「繼承」是類的重要特性。a類繼承b類,我們稱b類為「基類」,也稱為「父類」,a類則相應地被稱為「派生類」或「子類」。a類繼承了b類之後,a類就具有了b類的部分成員。那麼,究竟從基類那兒得到了哪些成員,這由2方面決定,①繼承方式,②基類成員的訪問許可權(即public/private/protected)。

繼承有三種方式,即公有(public)繼承、私有(private)繼承、保護(protected)繼承。我們先討論最常用的公有繼承。

公有繼承就是將基類的公有成員變為自己的公有成員,基類的保護成員變為自己的保護成員。

#include

#include

using namespace std;

class cbase

int getage()

protected:

void setname(string s)

void setage(int i)

};class cderive : public cbase

};int main ( ) 

從上面的例子可以看出,對於公有繼承,基類的成員能否訪問,有以下特徵:

基類的私有成員:在派生類和外部都不可以訪問。

基類的保護成員:在派生類可以訪問,在外部不可以訪問。

基類的公有成員:在派生類和外部都可以訪問。

二、私有(private)繼承

私有繼承是將基類的公有成員和保護成員變成自己的私有成員,而基類的私有成員在派生類裡本身就不能訪問。

#include

#include

using namespace std;

class cbase

int getage()

protected:

void setname(string s)

void setage(int i)

};class cderive : private cbase

string getbasename()

int getbaseage()

};int main ( ) 

從上面的例子可以看出,對於私有繼承,基類的成員能否訪問,有以下特徵:

基類的私有成員:在派生類和外部都不可以訪問。

基類的公有成員:在派生類可以訪問,在外部不可以訪問。

基類的保護成員:在派生類可以訪問,在外部不可以訪問。

三、保護(protected)繼承

保護繼承是將基類的公有成員和保護成員變成自己的保護成員,而基類的私有成員在派生類裡本身就不能訪問。

#include

#include

using namespace std;

class cbase

int getage()

protected:

void setname(string s)

void setage(int i)

};class cderive : protected cbase

string getbasename()

int getbaseage()

};int main ( ) 

從上面的例子可以看出,對於私有繼承,基類的成員能否訪問,有以下特徵:

基類的私有成員:在派生類和外部都不可以訪問。

基類的公有成員:在派生類可以訪問,在外部不可以訪問。

基類的保護成員:在派生類可以訪問,在外部不可以訪問。

四、三種繼承方式的比較

從上面的結果來看,私有繼承和保護繼承作用完全一樣。仔細一想其實還是有區別,區別是如果派生類再一次去派生其它類時,對於剛才的私有繼承來說,再派生的類將得不到任何成員。而對於剛才的保護繼承,仍能夠得到基類的公有和保護成員。

a類(基類)

b類(a的派生類)

c類(b的派生類)

公有繼承

公有成員

公有成員

公有成員

私有成員

(無)(無)

保護成員

保護成員

保護成員

私有繼承

公有成員

私有成員

(無)私有成員

(無)(無)

保護成員

私有成員

(無)保護繼承

公有成員

保護成員

保護成員

私有成員

(無)(無)

保護成員

保護成員

保護成員

C 繼承 公有,私有,保護

公有繼承 public 私有繼承 private 保護繼承 protected 是常用的三種繼承方式。1.公有繼承 public 公有繼承的特點是基類的公有成員和保護成員作為派生類的成員時,它們都保持原有的狀態,而基類的私有成員仍然是私有的,不能被這個派生類的子類所訪問。2.私有繼承 private...

C 繼承 公有,私有,保護

公有繼承 public 私有繼承 private 保護繼承 protected 是常用的三種繼承方式。1.公有繼承 public 公有繼承的特點是基類的公有成員和保護成員作為派生類的成員時,它們都保持原有的狀態,而基類的私有成員仍然是私有的,不能被這個派生類的子類所訪問。2.私有繼承 private...

C 繼承 公有,私有,保護

公有繼承 public 私有繼承 private 保護繼承 protected 是常用的三種繼承方式。1.公有繼承 public 公有繼承的特點是基類的公有成員和保護成員作為派生類的成員時,它們都保持原有的狀態,而基類的私有成員仍然是私有的,不能被這個派生類的子類所訪問。2.私有繼承 private...