C JAVA C 子類呼叫父類函式情況 留存

2021-09-11 08:44:00 字數 1793 閱讀 5901

時間久了就容易記不清了,特留存備用檢視

1.1同乙個類中構造函式呼叫建構函式   盡量不要這樣做,因為結果不確定!避免麻煩(c++11增加這方面能力,需在初始化列表中進行操作)

***可以把共用的**封裝成乙個私有的成員函式,然後在建構函式內統一呼叫。

1.2子類構造函式呼叫基類建構函式

-----基類有預設建構函式時,可以在子類不寫,則隱式呼叫

-----基類無/有預設建構函式時,在子類建構函式初始化列表處呼叫,則顯示呼叫     基類類名(引數)

class base

private:

int m_b;

}; class derived : public base

private:

int m_d;

};

構造原則如下:

1. 如果子類沒有定義構造方法,則呼叫父類的無引數的構造方法。

2. 如果子類定義了構造方法,不論是無引數還是帶引數,在建立子類的物件的時候,首先執行父類無引數的構造方法,然後執行自己的構造方法。

3. 在建立子類物件時候,如果子類的建構函式沒有顯示呼叫父類的建構函式,則會呼叫父類的預設無參建構函式。

4. 在建立子類物件時候,如果子類的建構函式沒有顯示呼叫父類的建構函式且父類自己提供了無參建構函式,則會呼叫父類自己的無參建構函式。

5. 在建立子類物件時候,如果子類的建構函式沒有顯示呼叫父類的建構函式且父類只定義了自己的有參建構函式,則會出錯(如果父類只有有引數的構造方法,則子類必須顯示呼叫此帶參構造方法)。

6. 如果子類呼叫父類帶引數的構造方法,需要用初始化父類成員物件的方式

super有三種用法

(1)在子類中呼叫父類的成員變數【子類和父類中變數同名】

(2)在子類中呼叫父類的成員方法【子類和父類中方法同名】

(3)在子類建構函式中呼叫父類的構造方法

this有三種用法

(1)在本類的成員方法中呼叫本類的成員變數

(2)在本類的成員方法中呼叫本類的另外乙個成員方法

(3)在本來的建構函式中呼叫本類中其他的構造方法

1.1同乙個類中呼叫建構函式 [必須在建構函式中第一行]   this(引數)

class person 

public person(string name,int age, boolean ***)

}

1.2子類構造函式呼叫基類建構函式 [必須在建構函式中第一行]  super(引數)

class man extends person 

}

class person 

public person(string name, int age, boolean ***)

public void person_test()

public void sub_test()

}class man extends person

public void sub_test()

public void sub()

}

1.1同乙個類中構造函式呼叫建構函式    :this(引數列表)

1.2子類構造函式呼叫基類建構函式      :base(引數列表)

①.通過子類無參建構函式建立子類例項,會預設呼叫父類的無參建構函式

②.通過子類有參建構函式建立子類例項,也會預設呼叫父類的無參建構函式

③.在子類建構函式中通過base關鍵字指明父類建構函式,當通過子類建構函式建立例項,會呼叫指明的、父類的建構函式

子類繼承父類的虛函式呼叫

父類 father 子類 son 1.father fa new son 例項1 includeusing namespace std class father void watchtv virtual void say class son public father void watchtv vo...

子類與父類構造函式呼叫順序

子類的析構函式的呼叫順序,和子類的建構函式的呼叫順序相反!記住,相反即可。include include using namespace std classm m classn n classa a classb public a b private m m1 m m2 static n ms n ...

QT父類訊號呼叫子類槽函式

故事背景 我定義了乙個qt父類,裡面有自定義訊號和槽函式,我在main函式定義父類指標指向子類物件,此時發訊號,子類收不到,開始咱們的探險之路。解決方案 根據加斷點發現呼叫的是父類的訊號,但是訊號槽是在子類建構函式做的關聯 此時把connect放在父類就可以了 這只是一種解決方案 另一種是在網上檢視...