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

2021-08-08 19:37:49 字數 630 閱讀 7343

在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...