Lesson 17 繼承與派生基礎

2021-06-23 06:45:09 字數 1855 閱讀 5331

子類是父類的一種!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...