面向對象的程序設計主要有四個特點:抽象、封裝、繼承和多態。其中繼承是我認為最最重要的一個特性,可以說繼承是面向對象的精華所在。 舉一個繼承的淺顯易懂的例子:假如我們已經有了一個“馬”的類,其中成員變量有身長、身高、體重等,還有“吃”、“奔跑”等成員函數,現在我們想創建新類”公馬“和”母馬“,很明顯公馬母馬具有馬的所有特征,我們就不需要重新再寫,只需要在原有類的基礎上增加”性別“這一新特征,即可創建兩個新類。同理,白公馬、黑公馬可以從公馬這一個類派生出來,也就是說它可以繼承公馬的全部特征而加上顏色這一新特征即可。馬是公馬的基類,公馬是白公馬的基類,所以我們可以看出基類、派生類都是相對而言的。 一、派生類的聲明方式 下面通過剛才舉的例子來說明
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)私有繼承 基類的共有成員和保護成員在派生類中成了私有成員。