多型與繼承

2021-08-08 10:47:21 字數 795 閱讀 4833

1.什麼多型?

多型就是可以允許將父物件設定成為乙個或者多個子物件相等的技術,賦值後,父物件就可以根據子物件當前的特性以不同的方式運作。

當使用基類的指標或引用呼叫重寫的虛函式時,當指向父類呼叫的就是父類的虛函式,指向子類呼叫的就是子類的虛函式。

形成多型的條件:

1.虛函式的重寫。

2.父類的引用、指標。

2.多型的物件模型–單繼承&多繼承?

單繼承:乙個子類只有乙個直接父類時的繼承關係稱為單繼承。

相當於只有乙個父類和乙個子類,相互之間形成關係。

多繼承:乙個子類有兩個或多個直接父類時的繼承關係稱為多繼承。

乙個子類可以同時繼承多個父類。

3.多型的物件模型–菱形繼承和菱形虛擬繼承?

菱形繼承/菱形虛擬繼承

菱形繼承的二義性和資料冗餘問題:由於b和c繼承a,所以b和c中會產生兩份a中的成員函式,所有就用虛函式來解決二義性問題。

虛函式:類的成員函式前加virtual關鍵字,則這個成員函式稱為虛函式。

虛函式重寫:當子類定義了與父類完全相同的虛函式時,則稱子類的這個函式重寫了父類的虛函式。

繼承與多型

繼承 繼承是c 語言支援 重用及多型的重要機制。通過繼承,可以繼承可以在現有類的基礎上派生出新類,新類將共享現有類的成員,並且還可以新增新的成員。c 語言中,重用主要表現為可以使用現成的類 如.net框架類庫中的類 來定義新類,主要方法有組合和繼承兩種 繼承是物件導向程式設計支援 重用的另乙個重要機...

繼承與多型

虛函式只要在基類裡定義,所以繼承類都不用重新定義為虛函式,自動成為虛函式。虛函式必須有實現,普通成員函式在沒有呼叫時可以沒有實現 定義 class animal 只需要在基類定義函式為虛,子類中不需要新增virtual.smile函式在沒有呼叫時可以不實現。當有函式為虛函式時,析構函式應定義為vir...

繼承與多型

繼承需要符合的關係 is a,父類更通用 子類更具體 子類繼承父類的所有屬性和方法 不包括父類構造方法 super可以呼叫父類的方法和構造方法 子類可以重寫父類的方法 使用多型之後,當需要增加新的子類型別時,無需更改總部類,程式的可擴充套件性及可維護性增強 簡單來說,多型是具有表現多種形態的能力的特...