參考:http://www.microsoftvirtualacademy.com/Content/ViewContent.aspx?et=9851&m=9838&ct=31054
如有錯誤,歡迎指正。
主要區別:
對于抽象方法,子類必須實現它。
對于虛擬方法,子類可以重寫也可以不重寫。
兩者約束不同
下面貼代碼
/* 聲明一個抽象類 * 1.抽象類中可以包含變量 * 2.抽象方法中無法聲明方法體 */ abstract class AbsClass { string name; public abstract void DisplayValue(string value); } /*繼承抽象類的子類必須實現抽象方法*/ class AbsClassInherited : AbsClass { /*使用override重寫實現*/ public override void DisplayValue(string value) { Console.WriteLine(value.ToUpper()); } } /* 聲明虛擬函數 */ class VirtClass { /*聲明一個虛擬函數 虛擬函數必須實現方法體*/ public virtual void DisplayValue(string value) { Console.WriteLine(value); } } /*虛擬方法可以實現也可以不實現*/ class VirtClassInherited : VirtClass { /*使用override重寫實現*/ public override void DisplayValue(string value) { Console.WriteLine(value.ToUpper()); } } /* 聲明一個接口 * 1.接口中的方法必須是公用的 * 2.接口中不允許有變量 * 3.接口中的方法不允許有方法體 */ interface IAbs { void DisplayValue(string value); }新聞熱點
疑難解答