c#方法重寫(xiě)和隱藏的學(xué)習(xí)示例
最近正在學(xué)習(xí)c#,對(duì)其中的方法重寫(xiě)和隱藏的概念很是模糊,現(xiàn)在將其歸納如下:
1:方法重寫(xiě):就是在基類(lèi)中的方法用virtual關(guān)鍵字來(lái)標(biāo)識(shí),然后在繼承類(lèi)中對(duì)該類(lèi)進(jìn)行重寫(xiě)(override),這樣基類(lèi)中的方法已經(jīng)被重寫(xiě)了,已經(jīng)失去了功能了。當(dāng)讓基類(lèi)的對(duì)象的引用直接指向繼承類(lèi)的對(duì)象時(shí)(多態(tài)性),調(diào)用該方法則是調(diào)用的繼承類(lèi)的方法。
2:方法隱藏:無(wú)論基類(lèi)中的方法是否用了virtual關(guān)鍵字,繼承類(lèi)中都可以用new關(guān)鍵字(如果不用new的話(huà),不會(huì)產(chǎn)生錯(cuò)誤,但會(huì)生成一個(gè)編譯警告)將基類(lèi)中的方法隱藏,所謂隱藏就是隱藏,不像重寫(xiě),重寫(xiě)就是原來(lái)的(基類(lèi)中)已經(jīng)不存在了,而隱藏是原來(lái)的還存在。所以當(dāng)讓基類(lèi)的對(duì)象的引用直接指向繼承類(lèi)的對(duì)象時(shí)(多態(tài)性),調(diào)用該方法則是調(diào)用的基類(lèi)的方法。
代碼如下:
public class BaseClass
{
public void functionA()
{
Console.WriteLine("BaseFunctionA http://www.dbjr.com.cn/sosoft/");
}
public virtual void functionB()
{
Console.WriteLine("BaseFunctionB http://www.dbjr.com.cn/sosoft/");
}
}
public class DerivedClass:BaseClass
{
public new void functionA()
{
Console.WriteLine("DerivedFunctionA http://www.dbjr.com.cn/sosoft/");
}
public override void functionB()
{
Console.WriteLine("DerivedFunctionB http://www.dbjr.com.cn/sosoft/");
}
}
當(dāng)利用多態(tài)性執(zhí)行下面代碼時(shí):
BaseClass baseFunction=new DerivedClass();
baseFunction.functionA();
baseFunction.functionB();
得到的結(jié)果是:
BaseFunctionA http://www.dbjr.com.cn/sosoft/
DerivedFunctionB http://www.dbjr.com.cn/sosoft/
- 詳解C#用new和override來(lái)實(shí)現(xiàn)抽象類(lèi)的重寫(xiě)區(qū)別
- C# 重寫(xiě)ComboBox實(shí)現(xiàn)下拉任意組件的方法
- C#重寫(xiě)DataGridView
- 在C#的類(lèi)或結(jié)構(gòu)中重寫(xiě)ToString方法的用法簡(jiǎn)介
- C#通過(guò)重寫(xiě)Panel改變邊框顏色與寬度的方法
- c#重寫(xiě)TabControl控件實(shí)現(xiàn)關(guān)閉按鈕的方法
- C#中重載與重寫(xiě)區(qū)別分析
- C#運(yùn)算符重載用法實(shí)例分析
- C#中重載相等(==)運(yùn)算符示例
- C#中多態(tài)、重載、重寫(xiě)區(qū)別分析
- C#重載運(yùn)算符詳解
- 基于C#方法重載的總結(jié)詳解
- c# 重載WndProc,實(shí)現(xiàn)重寫(xiě)“最小化”的實(shí)現(xiàn)方法
- C#中重載重寫(xiě)和覆蓋的定義與區(qū)別
相關(guān)文章
C#實(shí)現(xiàn)Winform無(wú)邊框移動(dòng)的方法
這篇文章主要介紹了C#實(shí)現(xiàn)Winform無(wú)邊框移動(dòng)的方法,涉及C#針對(duì)WinForm窗口操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09C#語(yǔ)法相比其它語(yǔ)言比較獨(dú)特的地方(一)
這篇文章主要介紹了C#語(yǔ)法相比其它語(yǔ)言比較獨(dú)特的地方(一),本文講解了switch語(yǔ)句可以用來(lái)測(cè)試string型的對(duì)象、多維數(shù)組、foreach語(yǔ)句、索引器和Property等內(nèi)容,需要的朋友可以參考下2015-04-04Unity OnGUI實(shí)時(shí)顯示游戲FPS
這篇文章主要為大家詳細(xì)介紹了Unity OnGUI實(shí)時(shí)顯示游戲FPS,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11C#實(shí)現(xiàn)的文件操作封裝類(lèi)完整實(shí)例【刪除,移動(dòng),復(fù)制,重命名】
這篇文章主要介紹了C#實(shí)現(xiàn)的文件操作封裝類(lèi),結(jié)合完整實(shí)例形式分析了C#封裝文件的刪除,移動(dòng),復(fù)制,重命名等操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-03-03