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