繼承的總結

2021-07-24 01:22:33 字數 1917 閱讀 2400

公有繼承:可訪問基類的保護和公有,繼承下來的父類的各個資料成員和成員函式的

屬性不變。

保護繼承:在派生類中基類的公有變成保護,基類的公有成員在派生類外不能訪問,它的

許可權變為保護的

;私有繼承:基類裡面成員的許可權變成

私有的;注意:不管是哪種繼承,在

派生類內部

父類的保護和公有都可以訪問,私有不可以訪問。

作用域

:在繼承的方式下子類和父類是兩個不同的作用域;

在派生類裡面定義的函式名字和基類的一樣,預設訪問派生類的,

訪問基類,則要加作用域限定符號(基類::基類成員);不要定義同名函式);

classa

};class

b:publica

};void

funtest()

2.初始化列表:若基類沒有預設的建構函式,派生類必須在派生類的建構函式中顯示的給出基類名和引數列表,否則編譯不會通過(因為系統預設合成的建構函式);

class

aa( int

a)};

class

b:public

a ;

void

funtest()

3.友元函式不能繼承,也就是說基類友元不能訪問子類私有和保護成員,原因其實很簡單,

因為繼承的是類的成員,但是友元並不是類的成員。

4.賦值相容規則(public):

(1)子類物件可以賦值給父類物件;

(2)父類物件不能賦值給子類物件;

(3)父類的指標/引用可以指向子類物件;

(4)子類的指標/引用不能指向父類物件。

classa;

class

b:publica;

void

funtest()

5.繼承與靜態成員:

基類定義了static成員,則整個繼承體系裡面只有乙個這樣的成員。無論派生出多少個子類,都只有乙個static成員例項.

6.繼承:

單繼承:

乙個子類僅有乙個直接的父類

class

a;

class

b:public

a;

多繼承:

乙個子類有兩個或兩個以上直接的父類

定義方式:類名 名字:屬性 名字,屬性 名字,...

class

a;

class

b;

class

c:public

a,public

b;

菱形繼承(會產生二義性):

class

a;

class

b1:public

a;

class

b2:public

a;

class

c:public

b1,public

b2;

void

funtest()

解決方法:加virtual ,虛繼承(在菱形的前兩個邊加virtual )

class

a;

class

b1:virtual

public

a;

class

b2:virtual

public

a;

class

c:public

b1,public

b2;

void

funtest()

//但是一般不用虛擬繼承:解決了資料的,但是卻帶來了效能上的消耗;

7.沒寫繼承方式,class預設私有,struct預設公有;

類的繼承總結

1.為什麼要繼承,如何繼承,繼承到了什麼?1 現實中存在包含的關係 節省寫 的時間 unstudent,student 2 extends關鍵字 3 子類繼承到了父類中的所有屬性和方法 子類可以定義自己特有的屬性和方法 2.自動轉型與強制轉型 1 子類物件的型別可以自動轉成父類型別 stu3 2 將...

類的繼承總結

類的繼承 某小白總結 一,格式 public class 類名 子類 extends 類名 父類 二,繼承的特點 1.單繼承,也就是乙個子類只能繼承乙個父類 2.沒有設定父類的類,自動有個object的父類 三,子類與父類的關係 子類會繼承父類所有的屬性和方法。但是,兩者在同乙個包下時 子類中和子類...

類的繼承總結

繼承,是指在已有類的基礎上建立新類的過程。子類繼承父類中的所有屬性和方法,雖然不一定都能呼叫,但是還是很大程度上提高 的重用性。而且在父類的基礎上,子類還能再新增新的屬性和方法,所以也提高了程式的擴充套件性。繼承後的呼叫 1子類和父類在同乙個包中時,能被呼叫的有 預設的,受保護的,公有的方法和屬性。...