基于C#的接口基礎(chǔ)教程之四(2)_.Net教程
推薦:基于C#的接口基礎(chǔ)教程之三 第三節(jié) 定義接口成員 接口可以包含一個和多個成員,這些成員可以是方法、屬性、索引指示器和事件,但不能是常量、域、操作符、構(gòu)造函數(shù)或析構(gòu)函數(shù),而且不能包含任何靜態(tài)成員。接口定
上例中,方法IBase.FWay在派生的接口ILeft中被Ileft的成員方法FWay覆蓋了。所以對d. FWay (1)的調(diào)用實際上調(diào)用了。雖然從IBase-> IRight-> IDerived這條繼承路徑上來看,ILeft.FWay方法是沒有被覆蓋的。我們只要記住這一點:一旦成員被覆蓋以后,所有對其的訪問都被覆蓋以后的成員"攔截"了。
類對接口的實現(xiàn)
前面我們已經(jīng)說過,接口定義不包括方法的實現(xiàn)部分。接口可以通過類或結(jié)構(gòu)來實現(xiàn)。我們主要講述通過類來實現(xiàn)接口。用類來實現(xiàn)接口時,接口的名稱必須包含在類定義中的基類列表中。
下面的例子給出了由類來實現(xiàn)接口的例子。其中ISequence 為一個隊列接口,提供了向隊列尾部添加對象的成員方法Add( ),IRing 為一個循環(huán)表接口,提供了向環(huán)中插入對象的方法Insert(object obj),方法返回插入的位置。類RingSquence 實現(xiàn)了接口ISequence 和接口IRing。
using System ;
interface ISequence {
object Add( ) ;
}
interface ISequence {
object Add( ) ;
}
interface IRing {
int Insert(object obj) ;
}
class RingSequence: ISequence, IRing
{
public object Add( ) {…}
public int Insert(object obj) {…}
}
如果類實現(xiàn)了某個接口,類也隱式地繼承了該接口的所有父接口,不管這些父接口有沒有在類定義的基類表中列出。看下面的例子:
using System ;
interface IControl {
void Paint( );
}
interface ITextBox: IControl {
void SetText(string text);
}
interface IListBox: IControl {
void SetItems(string[] items);
}
interface IComboBox: ITextBox, IListBox { }
這里, 接口IcomboBox繼承了ItextBox和IlistBox。類TextBox不僅實現(xiàn)了接口ITextBox,還實現(xiàn)了接口ITextBox 的父接口IControl。
前面我們已經(jīng)看到,一個類可以實現(xiàn)多個接口。再看下面的例子:
interface IDataBound {
void Bind(Binder b);
}
public class EditBox: Control, IControl, IDataBound {
public void Paint( );
public void Bind(Binder b) {...}
}
類EditBox從類Control中派生并且實現(xiàn)了Icontrol和IdataBound。在前面的例子中接口Icontrol中的Paint方法和IdataBound接口中的Bind方法都用類EditBox中的公共成員實現(xiàn)。C#提供一種實現(xiàn)這些方法的可選擇的途徑,這樣可以使執(zhí)行這些的類避免把這些成員設(shè)定為公共的。接口成員可以用有效的名稱來實現(xiàn)。例如,類EditBox可以改作方法Icontrol.Paint和IdataBound.Bind來來實現(xiàn)。
public class EditBox: IControl, IDataBound {
void IControl.Paint( ) {...}
void IDataBound.Bind(Binder b) {...}
}
分享:基于C#的接口基礎(chǔ)教程之二 第二節(jié) 定義接口 從技術(shù)上講,接口是一組包含了函數(shù)型方法的數(shù)據(jù)結(jié)構(gòu)。通過這組數(shù)據(jù)結(jié)構(gòu),客戶代碼可以調(diào)用組件對象的功能。 定義接口的一般形式為: [attributes] [m
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發(fā)送Email實例(可帶附件)
- js實現(xiàn)廣告漂浮效果的小例子
- asp.net Repeater 數(shù)據(jù)綁定的具體實現(xiàn)
- Asp.Net 無刷新文件上傳并顯示進度條的實現(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教程-基于C#的接口基礎(chǔ)教程之四(2)。