派生類建構函式 建立順序 阿里筆試題

2022-03-15 08:05:43 字數 1105 閱讀 3732

派生類 與基類的關係:

(1)建立建構函式的順序 :基類建構函式(注意此處基類的成員不能初始化) ==>派生類成員初始化 ==>派生類建構函式

(2)派生類的建構函式 中 基類的建構函式預設在第一條,如果不寫super(),則預設在第一條,注意位置不能顛倒

(3)派生類可以繼承全部的基類的建構函式

阿里筆試題 舉個栗子:

1

package

com.test;23

public

class

dispatchtest

1112

static

class

base

2021

public

void

printmessage()

2425}26

27static

class sub extends

base

3637

public

void

printmessage()

40}

4142 }

結果列印為:

sub.x=0sub.x=30

20

如上分析可以看出  第八行開始初始化 派生類sub的建構函式,按照剛才的順序

首先初始化基類的建構函式(不包含基類成員)因此

(1)基類的建構函式==>執行 17行,this.printmessage();注意此處的this是派生類,並且派生類的成員還沒有初始化,因此x=0;

列印 sub.x=0

(2)執行18行,基類的x =20

(3)派生類的成員==>執行29行 x=30;

(4)派生類建構函式==>執行32行;列印 sub.x=30;

(5)然後執行9行,注意,此處的sub屬於派生類,包含了兩類例項 基類 base b 和 sub b,

因為第7行強制轉化為基類,因此 b.x =20(基類的) 列印 20;

如果第7行為sub b,則b.x=40(派生類) 列印 40;

綜上 結果:

sub.x=0sub.x=30

20

參考:

派生類建構函式 建立順序 阿里筆試題

派生類 與基類的關係 1 建立建構函式的順序 基類建構函式 注意此處基類的成員不能初始化 派生類成員初始化 派生類建構函式 2 派生類的建構函式 中 基類的建構函式預設在第一條,如果不寫super 則預設在第一條,注意位置不能顛倒 3 派生類可以繼承全部的基類的建構函式 阿里筆試題 舉個栗子 1 p...

派生類建構函式

1 建構函式和複製控制成員不能繼承,每個類定義自己的建構函式和複製控制成員。像任何類一樣,如果類不定義自己的預設建構函式和複製控制成員,就將使用合成版本。2 派生類的合成預設建構函式除了初始化派生類的資料成員之外,它還初始化派生類物件的基類部分。基類部分由基類的預設建構函式初始化。3 派生類建構函式...

派生類 建構函式

在hpp標頭檔案中,宣告建構函式中,必須為新增的資料成員和基類的資料成員提供資料,即每乙個形參代表乙個成員 派生類宣告建構函式入下,其中r是給新增的資料,後面是基類的成員。在cpp檔案定義的時候,必須建立基類的物件,即如果不是預設的物件,則必須顯示的建立基類的物件,將資料傳遞給基類的物件 如下圖 t...