C 中繼承關係簡介

2021-07-02 00:24:20 字數 1786 閱讀 9090

class subclass:[繼承方式]parentclass

;

子類成員對基類成員的訪問方式的限制是由繼承方式決定的,

class a ;

class b:[public/protected/private]a;

繼承方式

基類成員

子類成員訪問

子類中的成員函式

子類的物件

public

public

protected

private

public

protected

不可訪問

可以訪問基類的public和protected成員

可以訪問基類的public和protected成員

protected

public

protected

private

protected

protected

不可訪問

可以訪問基類的public和protected成員

不能訪問基類中的所有成員

private

public

protected

private

private

private

不可訪問

可以訪問基類的public和protected成員

不能訪問基類中的所有成員

public繼承方式

如果子類對父類以public的方式繼承,那麼父類中的成員的屬性在子類中保持不變。父類的private成員為其私有成員,子類無法訪問。

protected繼承

如果子類對父類以protected的方式繼承,那麼父類中的public/protected成員相當於子類的private成員。父類的private成員為其私有成員,子類無法訪問。

private繼承

如果子類對父類以private的方式繼承,那麼父類中的public/protected成員相當於子類的private成員。父類的private成員為其私有成員,子類無法訪問。

class a

;private:

int num;

};class subclass: public a

private:

string s;

};

當初始化subclass的建構函式時,先初始化其父類a的建構函式,然後才初始化基類的建構函式。

class a 

};class b ;

class c: public a

private:

b b;

};

在多繼承時,父類和成員的初始化按照下列規則:

1,基類按照繼承順序從左到右呼叫建構函式初始化

2,呼叫成員變數的建構函式初始化,按照宣告順序,從上到下

3, 如果沒有成員變數初始化,跳過2步驟,直接初始化子類建構函式的函式體。

當乙個子類的多個父類同時從另乙個共同的父類派生時,多個父類中擁有從同一父類繼承來的同名的成員,在 子類中,這些同名成員在內潤中擁有多個副本,同乙個函式名擁有多個對映。使用虛基類,可以解決這類問題;

class subclass:virtualpublic a

通常,每個類只初始化自己的直接基類。在整個繼承關係中,直接或間接繼承虛基類的所有派生類,都必須在建構函式的成員初始化列表中列出對虛基類的初始化。

extjs中繼承關係的用法

extjs的繼承關係實現方式用三種。邊學邊記,先說一種實現方式吧 ext.extend subclass,superclass,overrides 這是一種最常見的實現方式。舉例如下 1 第一步,通過function 構造物件 var subclass function 2 第二步,建立新物件與父類...

c 中繼承 多型

有了繼承,指向基類型別的指標或引用就可以被用來指向派生類型別的物件。然後就可以編寫程式來操縱這些指標或引用而不用考慮它們所指向的物件的實際型別。用乙個基類指標或引用來操縱多個派生型別的能力被稱為多型性。在c 中,多型性分為兩種,一種稱為編譯時多型,另一種為執行時多型 分別解釋下 1.編譯時多型,也就...

C 中繼承總結

1 什麼是繼承?繼承 inheritance 機制是物件導向程式設計使 可以復用的最重要的手段,它允許程式設計師在保持 原有類特性的基礎上進行擴充套件,增加功能。這樣產生新的類,稱派生類。繼承呈現了物件導向程式設 計的層次結構,體現了由簡單到複雜的認知過程。2 舉個例子如果 a 是基類,b 是 是 ...