C 中new和override的區別

2021-04-18 11:06:50 字數 566 閱讀 2519

在c#中,override和new都會覆蓋父類中的方法。那它們兩者之前有什麼區別呢?

以下**的執行結果是什麼?

class base

public virtual void f2() }

class derived:base

public new void f2() }

class program

}

或者我們用以下的**更加容易明白:
class program  

}

以上兩個的輸出都為:

derived's override function f1

base's virtual fucntion f2  

在上面的例子中,由於f1覆蓋(override)了原先的方法,因此即使轉成父類的物件,仍舊呼叫了子類的f1方法。而由於子類的f2方法只是「隱藏」了父類的f2方法,因此當強制轉換成父類(base)的物件去呼叫f2方法時,呼叫了原先隱藏的父類的f2方法。

C 中new和override區別

在c 中實現重寫方法,可以用new和override兩個關鍵字來實現,究竟他們之間有什麼區別呢?下面,我以例子來說明他們之間的微妙區別 public class grandclass 基類 public virtual void method 用virtual才可以在子類中用override,而ne...

C 中new和override區別

在c 中實現重寫方法,可以用new和override兩個關鍵字來實現,究竟他們之間有什麼區別呢?下面,我以例子來說明他們之間的微妙區別 public class grandclass 基類 public virtual void method 用virtual才可以在子類中用override,而ne...

c 中,new 和 override 的區別

一 在c 中,new這個關鍵字使用頻率非常高,主要有3個功能 a 作為運算子用來建立乙個物件和呼叫建構函式。b 作為修飾符。c 用於在泛型宣告中約束可能用作型別引數的引數的型別。在本文中,只具體介紹new作為修飾符的作用,在用作修飾符時,new關鍵字可以在派生類中隱藏基類的方法,也就說在使用派生類的...