C#方法重寫全面介紹
C#語言有很多值得學(xué)習(xí)的地方,這里我們主要介紹C#方法重寫,包括介紹 virtual 修飾符和override 修飾符等方面。
C#方法重寫
通過為聲明的方法提供新的實(shí)現(xiàn),派生類可以重寫基類的方法。Java 和 C# 之間的一個(gè)重要區(qū)別在于,Java 方法在默認(rèn)情況下標(biāo)記為虛方法,而在 C# 中,必須使用 virtual 修飾符才能將方法顯式標(biāo)記為虛方法??梢圆捎么笾孪嗤姆绞街貙憣傩栽L問器以及方法。
派生類中要被C#方法重寫是用 virtual 修飾符聲明的。而在派生類中,已被C#方法重寫用 override 修飾符聲明。
override 修飾符表示派生類的方法或?qū)傩裕@個(gè)派生類代替基類中具有相同的名稱和簽名的類。要被重寫的基方法必須聲明為 virtual、abstract 或 override:以這種方式重寫非虛方法或靜態(tài)方法是不可能的 — 請(qǐng)參見關(guān)于此問題的下一部分。已被C#方法重寫或?qū)傩院椭貙懛椒ɑ驅(qū)傩员仨毦哂邢嗤脑L問級(jí)修飾符。
下面的示例顯示了一個(gè)稱為 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());
- }
- }
當(dāng)我們運(yùn)行這段代碼時(shí),會(huì)發(fā)現(xiàn)派生類的構(gòu)造函數(shù)使用基類中給出的方法體,這使得我們?cè)诓粡?fù)制該代碼的情況下就可以初始化 count 成員。下面是我們得到的輸出結(jié)果:
【編輯推薦】