c 繼承 三 多型

2021-07-30 04:23:31 字數 1134 閱讀 8925

多型:從字面意思不難理解為多種狀態

構成多型的兩個必要條件

(1)虛函式的覆蓋(重寫) 子類與父類一模一樣的函式,子類覆蓋了父類的虛函式

(2)父類的指標或者引用指向物件

重寫:作用域不同,函式名相同(析構函式特殊),引數相同,返回值相同

虛函式:類的成員函式前加virtual關鍵字(必須是類的成員函式),在類內宣告為虛函式時加virtual,在類外實現時不需要加virtual

建構函式不能為虛函式。最好把父類的析構函式定義為虛函式。

下面是關於多型和虛函式的乙個簡單例子

繼承體系同名成員函式的關係

1.過載:在同一作用域,函式名相同/引數不同,返回值可以不同

2.重寫:不在同一作用域(分別在基類和派生類),函式名相同/引數相同/返回值相同(協變例外),基類函式必須含有關鍵字virtual;訪問修飾符可以不同。

3.重定義:也叫隱藏,在不同作用域(分別在基類和派生類),函式名相同,在基類和派生類中只要不構成重寫就是重定義。

*純虛函式

在類的虛函式後面寫上=0,成員函式就變成了純虛函式。包含純虛函式的類叫做抽象類(介面類),抽象類不能例項化出物件。純虛函式在派生類中重新定義以後,派生類才能例項化出物件。

例如:virtual void buytickets()=0;

*友元與繼承

友元關係不能繼承,也就是說基類友元不能訪問子類私有和保護成員。

*繼承和靜態成員

基類定義了static成員,則整個繼承體系裡面只有這樣乙個成員。所有派生出來的子類都共享這個static成員。對這個static成員初始化時只能放在類外單獨進行初始化。

C 物件導向(三)多型

物件的多種形態 辛巴是獅子 辛巴是動物。animal xinba new lion 行為的多種形態 同樣的行為,但是表現形式不同。也就是說方法簽名一樣,方法體不同。簽名在這裡指的是方法名 引數以及返回值 行為的多型體現為方法的重寫 隱藏 過載 隱藏是實現多型的基本方法之一。class program...

物件導向(三) 多型

多型是物件導向三大特性中比較難理解的乙個概念,但並不複雜!在這裡介紹下有關多型的概念以及相關用法。多型可以理解為對於同乙個方法,根據不同的物件產生不同的結果。光說肯定很抽象,下面用個例子去解釋多型。例子 package com.zzl.polymorphism public class polymo...

c 學習筆記(三)多型性

本文介紹了c 程式設計中的多型性的概念及用法,多型性即是同樣的訊息發給不同派生類物件會產生多種形式的結果。通過基類的指標或引用 指標控制代碼或引用控制代碼 呼叫乙個virtual函式時,c 動態地 在執行時 根據物件初始化的類選擇正確的函式來執行。如下 ifndef commission h def...