面向對象的程序設計主要有四個特點:抽象、封裝、繼承和多態。其中繼承是我認為最最重要的一個特性,可以說繼承是面向對象的精華所在。 舉一個繼承的淺顯易懂的例子:假如我們已經有了一個“馬”的類,其中成員變量有身長、身高、體重等,還有“吃”、“奔跑”等成員函數,現在我們想創建新類”公馬“和”母馬“,很明顯公馬母馬具有馬的所有特征,我們就不需要重新再寫,只需要在原有類的基礎上增加”性別“這一新特征,即可創建兩個新類。同理,白公馬、黑公馬可以從公馬這一個類派生出來,也就是說它可以繼承公馬的全部特征而加上顏色這一新特征即可。馬是公馬的基類,公馬是白公馬的基類,所以我們可以看出基類、派生類都是相對而言的。 一、派生類的聲明方式 下面通過剛才舉的例子來說明
class horse
{
public:
void eat();
void run();
private:
float height;
float weight;
};
class malehorse:public horse
{
private:
char sex; //只寫新增加的成員
};
class wh_mhorse:public malehorse
{
private:
char color;
};
void horse::eat(){
cout<<"horse eats grass"<<endl;
}
派生類聲明方式為 class 派生類名 :繼承方式 基類名 二、派生類訪問屬性 首先,繼承有三種方式:public、protected、private。想必在剛學C++時大家都有這樣的疑惑,感覺protected和private屬性是一樣的,反正都不能從類外訪問。到了這裡就有區別了:private是”私有“的,不管何種繼承方式基類的私有成員都是基類所私有,派生類不可訪問;而基類protected成員隨繼承方式的不同在派生類中擔當不同身份。下面詳細介紹一下 (1)共用繼承 基類的共有成員和保護成員在派生類中保持原有訪問屬性,私有成員扔為基類所有。 (2)保護繼承 基類的共有成員和保護成員在派生類中成了保護成員。 (3)私有繼承 基類的共有成員和保護成員在派生類中成了私有成員。