關於C 中類方法的重寫和覆蓋

2021-07-10 09:39:45 字數 698 閱讀 4640

在c#中改變類中相同名稱的方法的實現過程中有三種方式:過載,重寫和覆蓋。

首先過載是指具有相同的方法名,通過改變引數的個數或者引數型別實現同名方法的不同實現。

重寫則是只在繼承中,子類通過override關鍵字修飾方法,實現父類和子類相同方法的不同實現,注意,父類方法必須是用virtual或者abstract關鍵字修飾的虛方法或者抽象方法,例如:

public class a }

public class b:a }

public static void main(string args)

輸出結果是:子類 子類

覆蓋則是指在繼承中,子類通過在與父類相同方法名之前用new修飾的乙個新的方法的定義,如:

public class a }

public class b:a }

public static void main(string args)

輸出結果為:父類 子類

注意:new可以不用寫也可以成功執行

總結:由上面的結果可以知道,重寫的結果是當進行父類物件在初始化的時候向下轉型的時候該物件將引用的方法是子類重寫後的方法,如果是覆蓋的話,那麼該物件引用的方法依然是父類的方法,也就是說子類的方法和父類的方法沒有什麼聯絡。

關於C 中類方法的重寫和覆蓋

在c 中改變類中相同名稱的方法的實現過程中有三種方式 過載,重寫和覆蓋。首先過載是指具有相同的方法名,通過改變引數的個數或者引數型別實現同名方法的不同實現。重寫則是只在繼承中,子類通過override關鍵字修飾方法,實現父類和子類相同方法的不同實現,注意,父類方法必須是用virtual或者abstr...

C 類方法的重寫與覆蓋

在c 中改變類中相同名稱的方法的實現過程中有三種方式 過載,重寫和覆蓋。首先過載是指具有相同的方法名,通過改變引數的個數或者引數型別實現同名方法的不同實現。重寫則是只在繼承中,子類通過override關鍵字修飾方法,實現父類和子類相同方法的不同實現,注意,父類方法必須是用virtual或者abstr...

關於 重寫 和 覆蓋。

最開始 覺得沒區別 看了篇文章後發現有區別。就是在當用子類建立父類的時候就有區別了 直接用別人的了 public classc1 public class c2 c1 c1 c1 new c1 console.writeline c1.getname 輸出 徐明祥 c2 c2 new c2 cons...