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