第十一章 繼承與派生 學習筆記

2022-03-22 09:25:21 字數 2927 閱讀 5886

第十一章 繼承和派生

1.單繼承(子類只有有乙個父類)&多繼承(子類有多個父類)

2.派生類的宣告方式

class 派生類名 :繼承方式 基類名

派生類新增加的成員

};

3.繼承方式:

public:(公有)

private:(私有)

protect:(保護)

4.派生類的構成:

從基類接收成員:(除構造和析構以外的所有成員)

調整從基類接收的成員:(改變訪問屬性)

對於新增同名成員函式:

如果引數列表相同:派生類覆蓋基類

如果引數列表不同:函式過載

在宣告派生類時增加的成員:(對基類的具體化)

5.派生類成員的訪問屬性

public: 基類保持原有的訪問屬性

基類在派生類外可見,可以在類外引用基類公有成員;

public->public

private->不可訪問

protect->protect

private:基類的公有成員不能在基類和派生類外被訪問

基類在派生類外不可見

public->private

private->不可訪問

protect->private

protect:不能被類外引用,可以被派生類的成員引用

基類在派生類外不可見,其下一層派生類可訪問

public->protect

private->不可訪問

protect->protect

不可訪問:*派生類成員函式不能直接訪問基類私有成員;

7.派生類的建構函式和析構函式

(在執行派生類的建構函式時,呼叫基類的建構函式)

*一般派生類的建構函式

派生類建構函式名(總引數列表):基類建構函式名(參數列){

派生類新增資料成員初始化;

總引數列表:同時包括基類和派生類的引數(同時包括引數型別

*使用初始化列表:

參數列:呼叫基類建構函式(不加引數型別)

派生類建構函式名(總引數列表):基類建構函式名(參數列),新增資料成員(引數){};

*有子物件的派生類的建構函式

派生類建構函式名(總引數列表):基類建構函式名(參數列),子物件名(參數列){

派生類新增資料成員初始化;

*多層派生時的建構函式

(先構造基類,再構造子物件,最後構造派生類新增成員)

(不要列出每一層的派生類的建構函式,只需寫出其上一層派生類的建構函式即可)

*派生建構函式的特殊形式

當不對派生類新增資料成員進行任何特殊初始操作,派生類建構函式的函式體為空。

如果基類沒有定義建構函式,或者定義了沒有引數的建構函式,那麼派生類可以不寫基類的建構函式,此時呼叫預設建構函式

析構函式:(先析構派生類新增成員,再析構子物件,最後析構基類)

8.多重繼承

*宣告多重繼承的方法

class 派生類名 :

<

繼承方式

> 基類1

名, <

繼承方式

> 基類2

名,......

新增成員資料初始化;

*多重派生類的建構函式

派生類建構函式名(總參數列)

:基類1建構函式(參數列),基類

2建構函式(參數列)

派生類新增成員資料初始化語句;

*多重函式的二義性

9.虛基類(在繼承簡潔共同記錄是只保留乙份成員)

*虛基類宣告方法

class a

class b : virtual 《繼承方式

> a

class c : virtual 《繼承方式

> a

注意:虛基類並不是在宣告基類時宣告的,而是在宣告派生類,指定繼承方式時宣告

class 派生類名 :

virtual <

繼承方式

>

基類名

*虛基類的初始化(使用初始化列表)

在最後的派生類中不僅要負責對其基類進行初始化,還要負責對虛基類初始化。

盡量避免使用多繼承

10.基類和派生類的轉換

只有公有繼承能較好的保留了基類的特徵,因此,只有共有派生類才是基類真正的子型別。

只能用子類物件對其基類物件賦值,而不能用基類物件對其子類物件賦值。

11.繼承和組合

繼承(派生類)是縱向關係,組合(復合類)是橫向關係。

第十一章 繼承和派生(一)

專案1 定義點類,並以點類為基類,派生出直線類,從基類中繼承的點的資訊表示直線的中點。請閱讀下面的 並將缺少的部分寫出來。include includeusing namespace std class point 定義座標點類 point double x0,double y0 x x0 y y0...

Android學習筆記 第十一章

第十一章 使用對話方塊 11.2探索不同型別的對話方塊 android自帶的對話方塊 dialog 所有對話方塊的基類 alertdialog 帶有1,2,3個按鈕的控制項 characterpickerdialog 用於顯示和選擇與基本字元相關聯的聲調字元的dialog datepickdialo...

python學習筆記 第十一章

import library files import requests 傳送乙個http請求 send http requests res requests.get check error 檢查錯誤 res.raise for status check state code 檢驗狀態碼 print...