C#中抽象方法與虛擬方法的區(qū)別
更新時間:2014年08月21日 09:12:59 投稿:shichen2014
這篇文章主要介紹了C#中抽象方法與虛擬方法的區(qū)別,對于C#初學(xué)者來說可以深入理解抽象方法與虛擬方法,需要的朋友可以參考下
學(xué)過C#的人應(yīng)該都知道抽象方法與虛擬方法,而很多初學(xué)者對二者之間的區(qū)別并不是很了解。今天本文就來分析一下二者之間的區(qū)別。并附上實例加以說明。具體分析如下:
一、主要區(qū)別:
對于抽象方法,子類必須實現(xiàn)它。
對于虛擬方法,子類可以重寫也可以不重寫。
因此,兩者約束不同
二、實例代碼如下:
/* 聲明一個抽象類
* 1.抽象類中可以包含變量
* 2.抽象方法中無法聲明方法體
*/
abstract class AbsClass
{
string name;
public abstract void DisplayValue(string value);
}
/*繼承抽象類的子類必須實現(xiàn)抽象方法*/
class AbsClassInherited : AbsClass
{
/*使用override重寫實現(xiàn)*/
public override void DisplayValue(string value)
{
Console.WriteLine(value.ToUpper());
}
}
/* 聲明虛擬函數(shù)
*/
class VirtClass
{
/*聲明一個虛擬函數(shù)
虛擬函數(shù)必須實現(xiàn)方法體*/
public virtual void DisplayValue(string value)
{
Console.WriteLine(value);
}
}
/*虛擬方法可以實現(xiàn)也可以不實現(xiàn)*/
class VirtClassInherited : VirtClass
{
/*使用override重寫實現(xiàn)*/
public override void DisplayValue(string value)
{
Console.WriteLine(value.ToUpper());
}
}
/* 聲明一個接口
* 1.接口中的方法必須是公用的
* 2.接口中不允許有變量
* 3.接口中的方法不允許有方法體
*/
interface IAbs
{
void DisplayValue(string value);
}
希望本文所做的分析對大家的C#程序設(shè)計能有所幫助。
相關(guān)文章
C#中DataTable實現(xiàn)行列轉(zhuǎn)換的方法
這篇文章主要介紹了C#中DataTable實現(xiàn)行列轉(zhuǎn)換的方法,實例分析了C#操作DataTable的相關(guān)技巧,非常具有實用價值,需要的朋友可以參考下2015-04-04
C#?使用?Filestream?修改大文件指定位置數(shù)據(jù)
這篇文章主要介紹了C#?使用?Filestream修改大文件指定位置數(shù)據(jù),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-09-09
C# 實現(xiàn)把double 存成兩位精度小數(shù)
這篇文章主要介紹了C# 實現(xiàn)把double 存成兩位精度小數(shù),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12
在C#中使用二叉樹實時計算海量用戶積分排名的實現(xiàn)詳解
這篇文章主要介紹了在C#中使用二叉樹實時計算海量用戶積分排名的實現(xiàn)詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01

