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















 
 
 
 
 
 
 