C#方法重寫全面介紹
C#語言有很多值得學習的地方,這里我們主要介紹C#方法重寫,包括介紹 virtual 修飾符和override 修飾符等方面。
C#方法重寫
通過為聲明的方法提供新的實現,派生類可以重寫基類的方法。Java 和 C# 之間的一個重要區別在于,Java 方法在默認情況下標記為虛方法,而在 C# 中,必須使用 virtual 修飾符才能將方法顯式標記為虛方法??梢圆捎么笾孪嗤姆绞街貙憣傩栽L問器以及方法。
派生類中要被C#方法重寫是用 virtual 修飾符聲明的。而在派生類中,已被C#方法重寫用 override 修飾符聲明。
override 修飾符表示派生類的方法或屬性,這個派生類代替基類中具有相同的名稱和簽名的類。要被重寫的基方法必須聲明為 virtual、abstract 或 override:以這種方式重寫非虛方法或靜態方法是不可能的 — 請參見關于此問題的下一部分。已被C#方法重寫或屬性和重寫方法或屬性必須具有相同的訪問級修飾符。
下面的示例顯示了一個稱為 StepUp 的虛方法,它是在派生類中用 override 修飾符重寫的:
- using System;
- public class CountClass
- {
- public int count;
- // Constructor
- public CountClass(int startValue)
- {
- count = startValue;
- }
- public virtual int StepUp()
- {
- return ++count;
- }
- }
- class Count100Class : CountClass
- {
- // Constructor
- public Count100Class(int x) : base(x)
- {
- }
- public override int StepUp()
- {
- return ((base.count) + 100);
- }
- public static void Main()
- {
- CountClass counter = new CountClass(10);
- CountClass bigCounter = new Count100Class(10);
- Console.WriteLine("Value of count in base class = {0}",
- counter.StepUp());
- Console.WriteLine("Value of count in derived class = {0}",
- bigCounter.StepUp());
- }
- }
當我們運行這段代碼時,會發現派生類的構造函數使用基類中給出的方法體,這使得我們在不復制該代碼的情況下就可以初始化 count 成員。下面是我們得到的輸出結果:
【編輯推薦】