C 中的多型性

2021-04-13 06:08:22 字數 965 閱讀 2978

首先理解一下什麼叫多型。同一操作作用於不同的物件,可以有不同的解釋,產生不同的執行結果,這就是多型性。

多型性通過派生類覆寫基類中的虛函式型方法來實現。

多型性分為兩種,一種是編譯時的多型性,一種是執行時的多型性。

編譯時的多型性:編譯時的多型性是通過過載來實現的。對於非虛的成員來說,系統在編譯時,根據傳遞的引數、返回的型別等資訊決定實現何種操作。

執行時的多型性:執行時的多型性就是指直到系統執行時,才根據實際情況決定實現何種操作。c#中執行時的多型性是通過覆寫虛成員實現。

下面我們來分別說明一下多型中涉及到的四個概念:過載,覆寫,虛方法和抽象方法。

過載和覆寫的區別:

過載

類中定義的方法的不同版本

public

int calculate(int x, int y)

public

double calculate(double x, double y)

特點(兩必須一可以)

方法名必須相同

引數列表必須不相同

返回值型別可以不相同

覆寫

子類中為滿足自己的需要來重複定義某個方法的不同實現。

通過使用override關鍵字來實現覆寫。

只有虛方法和抽象方法才能被覆寫。

要求(三相同)

相同的方法名稱

相同的引數列表

相同的返回值型別

最後再來介紹一下虛方法和抽象方法

虛方法宣告使用virtual關鍵字。

呼叫虛方法,執行時將確定呼叫物件是什麼類的例項,並呼叫適當的覆寫的方法。

虛方法可以有實現體。

抽象方法

必須被派生類覆寫的方法。

可以看成是沒有實現體的虛方法。

如果類中包含抽象方法,那麼類就必須定義為抽象類,不論是否還包含其他一般方法。

C 中的多型性

多型 polymorphism 在c 中可以簡單地概括為 通用乙個介面,實現多種方法 它是物件導向程式設計領域的核心概念,只有程式在執行時才決定呼叫對應的函式。c 多型性是通過虛函式來實現的,虛函式允許子類重新定義成員函式,而子類重新定義父類的做法稱為覆蓋 override 或者稱為重寫。重寫的話可...

C 的多型性

c 的多型性 1.多型性的概念 多型性是指用乙個名字定義不同的函式,這函式執行不同但又類似的操作,從而實現 乙個介面,多種方法 多型性的實現與靜態聯編 動態聯編有關。靜態聯編支援的多型性稱為編譯時的多型性,也稱靜態多型性,它是通過函式過載和運算子過載實現的。動態聯編支援的多型性稱為執行時的多型性,也...

C 的多型性

type text css rel stylesheet href 是允許將父物件設定成為和乙個或多個它的子物件相等的技術,比如parent child 多型性使得能夠利用同一類 基類 型別的指標來引用不同類的物件,以及根據所引用物件的不同,以不同的方式執行相同的操作.c 中多型更容易理解的概念為允...