繼承(七) 多型性相關知識

2022-02-18 21:13:45 字數 893 閱讀 2762

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

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

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

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

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

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

過載和覆寫的區別:

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

public int calculate(int x, int y)

public double calculate(double x, double y)

特點(兩必須一可以)

方法名必須相同

引數列表必須不相同

返回值型別可以不相同

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

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

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

要求(三相同)

相同的方法名稱

相同的引數列表

相同的返回值型別

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

虛方法:

宣告使用virtual關鍵字。

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

虛方法可以有實現體。

抽象方法:

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

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

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

繼承 多型的相關知識

一 繼承 在php中,使用extends實現繼承。作用 如果我們不使用繼承,就要寫很多重複的 二 繼承的構造方法 1 子類繼承父類時,子類沒有構造方法,例項化子類物件時,會執行父類的構造方法。子類如果有自己的構造方法,例項化子類物件時,只會自動執行子類自己的構造方法。2 子類的構造方法有兩個引數,所...

JAVA繼承特性相關記錄

1 有繼承才有多型,繼承特性相信不用多解釋了吧,這裡主要記錄一下注意事項 1 private的屬性和方法是繼承並隱藏的 2 構造方法不能繼承 3 子類中的同名屬性即使不同型別也會使父類中的屬性隱藏 只有理解了繼承特性才能更好的掌握以下的幾個知識點。2 重寫和過載 1 過載只需要方法名一致和引數列表不...

多型性和虛繼承

多型性 字面意思是多種形狀,即 乙個介面,多種方法 c 的多型性是由虛函式來實現的,虛函式允許派生類重新定義成員函式,派生類重新定義基類的方法稱為遮蔽。只有重寫虛函式才算是體現了函式的多型性。過載沒有體現多型性,因為過載是根據同名函式的不同引數型別選擇使用哪個函式的。include using na...