C 重寫 override 和覆蓋 new

2022-09-08 13:45:15 字數 1088 閱讀 4605

重寫

用關鍵字 virtual 修飾的方法,叫虛方法。可以在子類中用override 宣告同名的方法,這叫「重寫」。相應的沒有用virtual修飾的方法,我們叫它實方法。

重寫會改變父類方法的功能。

覆蓋

在子類中用 new 關鍵字修飾 定義的與父類中同名的方法,叫覆蓋。 

覆蓋不會改變父類方法的功能。

示例**:(c# 控制台程式)

using

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

using

system.threading.tasks;

namespace

public

string cover_get() //

實現覆蓋實方法

}public

class rewrite : getthename //

繼承父類的重寫子類

}public

class cover : getthename //

繼承父類的覆蓋子類

}class

program}}

結果:

總結

1:不管是重寫還是覆蓋都不會影響父類自身的功能(廢話,肯定的嘛,除非**被改)。

2:當用子類建立父類的時候,如 c1 c3 = new c2(),重寫會改變父類的功能,即呼叫子類的功能;而覆蓋不會,仍然呼叫父類功能。

3:虛方法、實方法都可以被覆蓋(new),抽象方法,介面 不可以。

4:抽象方法,介面,標記為virtual的方法可以被重寫(override),實方法不可以。

5:重寫使用的頻率比較高,實現多型;覆蓋用的頻率比較低,用於對以前無法修改的類進行繼承的時候。

參考: 

C 方法重寫(override)

重寫 override 重寫 類的繼承時發生,在子類中重新定義父類中的方法,子類中的方法和父類的方法是一樣的,即方法名,引數,返回值型別都相同。例如 基類方法宣告為virtual 虛方法 派生類中使用override宣告此方法的重寫.重寫override一般用於介面實現和繼承類的方法改寫,要注意 1...

C 重寫基函式(override)

物件導向程式設計的三大特性是繼承,封裝和多型。當我們從父類中繼承了一種方法,但是我們事實上需要的是另外一種方法,這時候我們就可以通過重寫方法,實現乙個方法名對應多種方法。舉例來說,我們有乙個類名叫animal,其中有乙個方法名為move class animal class bird animal ...

重寫 override)和過載(overload

摘要 首先重寫和過載都是多型的一種體現方式。過載是編譯期間的活動,重寫是執行期間的活動 其次,過載是在乙個類中定義相同的名字的方法,方法的引數列表或者型別要互相不同,但是返回值型別不作為是否過載的標準,可以修改可見性 重寫是不同的,要求子類重寫基類的方法時要與父類方法具有相同的引數型別和返回值,可見...