C#中抽象方法與虛擬方法的區(qū)別
學(xué)過(guò)C#的人應(yīng)該都知道抽象方法與虛擬方法,而很多初學(xué)者對(duì)二者之間的區(qū)別并不是很了解。今天本文就來(lái)分析一下二者之間的區(qū)別。并附上實(shí)例加以說(shuō)明。具體分析如下:
一、主要區(qū)別:
對(duì)于抽象方法,子類(lèi)必須實(shí)現(xiàn)它。
對(duì)于虛擬方法,子類(lèi)可以重寫(xiě)也可以不重寫(xiě)。
因此,兩者約束不同
二、實(shí)例代碼如下:
/* 聲明一個(gè)抽象類(lèi) * 1.抽象類(lèi)中可以包含變量 * 2.抽象方法中無(wú)法聲明方法體 */ abstract class AbsClass { string name; public abstract void DisplayValue(string value); } /*繼承抽象類(lèi)的子類(lèi)必須實(shí)現(xiàn)抽象方法*/ class AbsClassInherited : AbsClass { /*使用override重寫(xiě)實(shí)現(xiàn)*/ public override void DisplayValue(string value) { Console.WriteLine(value.ToUpper()); } } /* 聲明虛擬函數(shù) */ class VirtClass { /*聲明一個(gè)虛擬函數(shù) 虛擬函數(shù)必須實(shí)現(xiàn)方法體*/ public virtual void DisplayValue(string value) { Console.WriteLine(value); } } /*虛擬方法可以實(shí)現(xiàn)也可以不實(shí)現(xiàn)*/ class VirtClassInherited : VirtClass { /*使用override重寫(xiě)實(shí)現(xiàn)*/ public override void DisplayValue(string value) { Console.WriteLine(value.ToUpper()); } } /* 聲明一個(gè)接口 * 1.接口中的方法必須是公用的 * 2.接口中不允許有變量 * 3.接口中的方法不允許有方法體 */ interface IAbs { void DisplayValue(string value); }
希望本文所做的分析對(duì)大家的C#程序設(shè)計(jì)能有所幫助。
相關(guān)文章
混合語(yǔ)言編程—C#使用原生的Directx和OpenGL繪圖的方法
本文要說(shuō)的是混合C#和C/C++語(yǔ)言編程,在C#的Winform和WPF下使用原生的Direct和OpenGL進(jìn)行繪圖2013-09-09在C#中如何使用正式表達(dá)式獲取匹配所需數(shù)據(jù)
本文給大家分享C#中如何使用正式表達(dá)式獲取匹配所需數(shù)據(jù) ,非常實(shí)用,對(duì)正則表達(dá)式獲取匹配相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧2016-03-03c#實(shí)現(xiàn)多線程局域網(wǎng)聊天系統(tǒng)
這篇文章主要介紹了c#實(shí)現(xiàn)多線程局域網(wǎng)聊天系統(tǒng)的相關(guān)代碼,有此方面需求的小伙伴可以參考下。2015-06-06WinForm實(shí)現(xiàn)攔截窗體上各個(gè)部位的點(diǎn)擊特效實(shí)例
這篇文章主要介紹了WinForm實(shí)現(xiàn)攔截窗體上各個(gè)部位的點(diǎn)擊特效實(shí)例,對(duì)窗體上各個(gè)部位進(jìn)行定義,從而實(shí)現(xiàn)了點(diǎn)擊特效,需要的朋友可以參考下2014-09-09WPF 自定義雷達(dá)圖開(kāi)發(fā)實(shí)例教程
這篇文章主要介紹了WPF 自定義雷達(dá)圖開(kāi)發(fā)實(shí)例教程,本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09