什么是.net的接口和抽象類(2)_.Net教程
教程Tag:暫無Tag,歡迎添加,賺取U幣!
推薦:10個ASP.NET編程技巧1、盡量減少表單回送 每當點擊Web網頁上的Button、LinkButton或ImageButton控件時,表單就會被發送到服務器上。如果控件的AutoPostBack屬性被設置為true,如果CheckBox、CheckBoxList等控件的狀態被改變后,也會使表單會發送回服務器。 每次當表單被發送回服
設計結構如圖所示:
1. 定義抽象類
public abstract class Animal { protected string _name; //聲明抽象屬性 public abstract string Name { get; } //聲明抽象方法 public abstract void Show(); //實現一般方法 public void MakeVoice() { Console.WriteLine("All animals can make voice!"); } } |
2. 定義接口
public interface IAction { //定義公共方法標簽 void Move(); } |
3. 實現抽象類和接口
public class Duck : Animal, IAction { public Duck(string name) { _name = name; } //重載抽象方法 public override void Show() { Console.WriteLine(_name + " is showing for you."); } //重載抽象屬性 public override string Name { get { return _name;} } //實現接口方法 public void Move() { Console.WriteLine("Duck also can swim."); } } public class Dog : Animal, IAction { public Dog(string name) { _name = name; } public override void Show() { Console.WriteLine(_name + " is showing for you."); } public override string Name { get { return _name; } } public void Move() { Console.WriteLine(_name + " also can run."); } } |
4. 客戶端實現
public class TestAnmial { public static void Main(string [] args) { Animal duck = new Duck("Duck"); duck.MakeVoice(); duck.Show(); Animal dog = new Dog("Dog"); dog.MakeVoice(); dog.Show(); IAction dogAction = new Dog("A big dog"); dogAction.Move(); } } |
dunai認為:抽象類是提取具體類的公因式,而接口是為了將一些不相關的類“雜湊”成一個共同的群體。至于他們在各個語言中的句法,語言細節并不是我關心的重點。
Artech認為:所代碼共用和可擴展性考慮,盡量使用Abstract Class。當然接口在其他方面的優勢,我認為也不可忽視。
shenfx認為:當在差異較大的對象間尋求功能上的共性時,使用接口;當在共性較多的對象間尋求功能上的差異時,使用抽象基類。
最后,MSDN的建議:
如果預計要創建組件的多個版本,則創建抽象類。抽象類提供簡單易行的方法來控制組件版本。通過更新基類,所有繼承類都隨更改自動更新。另一方面,接口一旦創建就不能更改。如果需要接口的新版本,必須創建一個全新的接口。
如果創建的功能將在大范圍的全異對象間使用,則使用接口。抽象類應主要用于關系密切的對象,而接口最適合為不相關的類提供通用功能。
如果要設計小而簡練的功能塊,則使用接口。如果要設計大的功能單元,則使用抽象類。
如果要在組件的所有實現間提供通用的已實現功能,則使用抽象類。抽象類允許部分實現類,而接口不包含任何成員的實現。
分享:asp.net回發或回調參數無效解決方法首先,這個問題出現在asp.net2.0中,我是在做一個二級菜單出現了這個問題 , 該功能用javascript改變DrownDownList內容后再提交就出現這個錯誤, 總結 網上的解決 回發或回調參數無效 方法主要有: 一是在前臺aspx頁中設置 %@ Page Language=C# EnableEv
相關.Net教程:
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發送Email實例(可帶附件)
- js實現廣告漂浮效果的小例子
- asp.net Repeater 數據綁定的具體實現
- Asp.Net 無刷新文件上傳并顯示進度條的實現方法及思路
- Asp.net獲取客戶端IP常見代碼存在的偽造IP問題探討
- VS2010 水晶報表的使用方法
- ASP.NET中操作SQL數據庫(連接字符串的配置及獲取)
- asp.net頁面傳值測試實例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲過程實現分頁示例代碼
- 相關鏈接:
- 教程說明:
.Net教程-什么是.net的接口和抽象類(2)。