子類是父類的一種!is a;特化/泛化
class person
;class teacher:person
;
繼承和派生的關係:(基類/父類,派生類/子類)
繼承是在乙個已經存在的類的基礎上建立乙個新的類;
派生是從已經有的類(父類)產生乙個新了子類;
分類:1. 單重繼承:繼承於乙個父類
2. 多重繼承:多個父類,同時是2個類的一種情況;
1. 單級繼承:繼承關係只有2層
2. 多級繼承:超過2層
1. 單重繼承:
class 《派生類名》:[繼承方式]《基類》 ;
2. 多重繼承: // 多重繼承下,繼承方式不能共享
class 《派生類名》:[繼承方式]《基類1, [繼承方式]《基類2>, ...;
3. 預設繼承方式(省略情況下的繼承方式):
class: private;
struct: public
class a
class b: public a
b b;
b.mval; // 呼叫的是b裡的成員,要呼叫a裡的成員要:
b.a::mval; // 可以訪問,所以b裡是分配了a裡的成員記憶體的
1. 在派生類的建構函式中,要對父類的屬性賦初值要呼叫父類的建構函式
調整基類的public, private屬性
class a : public b; a類
public
protected
private
b類外public
protected
inaccessible
b類內public
protected
inaccessible
class a : protected b;
a類public
protected
private
b類外n
ninaccessible
b類內y
yinaccessible
class a : private b;
a類public
protected
private
b類外nnn
b類內yyn
inaccessible:不可直接訪問
繼承方式:
1. 控制的是子類成員函式與物件的訪問方式;
public:
子類繼承了父類的protected, private原態;
protected:
父類 ->子類: public, protected-->proteced ; private不變 ; // 類外即用物件無法直接訪問屬性,但可以用函式介面間接訪問;
private:
has a關係
父類->子類: public, protected, private-->private;
總結:基類成員在派生類中的訪問許可權,由基類成員許可權與繼承許可權取小的那個許可權,而private成員永遠是不可訪問的!!!
public , protected成員 在protected, privated繼承下都是只能在類內訪問,為外不能訪問;
對於單級繼承,private與protected繼承沒有區別,但對於多級繼承來說,private繼承對於第三重繼承,無法訪問第一重的public, protected成員,造成了截斷!
派生類只能獲得直接基類的成員,不能獲得間接基類的成員,要通過直接基類來獲得間接基類的成員;
調整基類成員在子類中的許可權:
using 《父類名》::成員名; // 該方法當然只能針對父類中非inaccessible的成員變數
NeHe教程Qt實現 lesson17
nehe 系列教程之十四 2d紋理字型 本課展示2d紋理生成字型。首先是字型庫的建立及相關字元輸出函式 namespace struct fyjbitmapfont static fyjbitmapchar chars1 128 static fyjbitmapchar chars2 128 con...
繼承與派生基礎概念
物件導向的程式設計主要有四個特點 抽象 封裝 繼承和多型。其中繼承是我認為最最重要的乙個特性,可以說繼承是物件導向的精華所在。舉乙個繼承的淺顯易懂的例子 假如我們已經有了乙個 馬 的類,其中成員變數有身長 身高 體重等,還有 吃 奔跑 等成員函式,現在我們想建立新類 公馬 和 母馬 很明顯公馬母馬具...
派生與繼承 多重派生
1 理解下面的程式,並在 vc 6.0 下執行檢視結果,回答程式後面的問題。class cbase1 cbase1 void print protected int a class cbase2 cbase2 void print protected int b class cderive publ...