基于C#的接口基礎(chǔ)教程之五(7)_.Net教程
推薦:基于C#的接口基礎(chǔ)教程之四 第四節(jié)、訪問接口 對接口成員的訪問 對接口方法的調(diào)用和采用索引指示器訪問的規(guī)則與類中的情況也是相同的。如果底層成員的命名與繼承而來的高層成員一致,那么底層成員將覆蓋同
上面的兩種寫法都是正確的。但是如果接口成員在繼承中覆蓋了父接口的成員,那么對該接口成員的實(shí)現(xiàn)就可能必須映射到顯式接口成員執(zhí)行體�?聪旅娴睦樱�
interface IBase {
int P { get; }
}
interface IDerived: IBase {
new int P( ) ;
}
接口IDerived從接口IBase中繼承,這時(shí)接口IDerived 的成員方法覆蓋了父接口的成員方法。因?yàn)檫@時(shí)存在著同名的兩個接口成員,那么對這兩個接口成員的實(shí)現(xiàn)如果不采用顯式接口成員執(zhí)行體,編譯器將無法分辨接口映射。所以,如果某個類要實(shí)現(xiàn)接口IDerived,在類中必須至少定義一個顯式接口成員執(zhí)行體。采用下面這些寫法都是合理的:
//一:對兩個接口成員都采用顯式接口成員執(zhí)行體來實(shí)現(xiàn)
lass C: IDerived {
int IBase.P
get
{ //具體的接口實(shí)現(xiàn)代碼 }
int IDerived.P( ){
//具體的接口實(shí)現(xiàn)代碼 }
}
//二:對Ibase 的接口成員采用顯式接口成員執(zhí)行體來實(shí)現(xiàn)
class C: IDerived {
int IBase.P
get {//具體的接口實(shí)現(xiàn)代碼}
public int P( ){
//具體的接口實(shí)現(xiàn)代碼 }
}
//三:對IDerived 的接口成員采用顯式接口成員執(zhí)行體來實(shí)現(xiàn)
class C: IDerived{
public int P
get {//具體的接口實(shí)現(xiàn)代碼}
int IDerived.P( ){
//具體的接口實(shí)現(xiàn)代碼}
}
另一種情況是,如果一個類實(shí)現(xiàn)了多個接口,這些接口又擁有同一個父接口,這個父接口只允許被實(shí)現(xiàn)一次。
using System ;
interface IControl {
void Paint( ) ;
interface ITextBox: IControl {
void SetText(string text) ;
}
interface IListBox: IControl {
void SetItems(string[] items) ;
}
class ComboBox: IControl, ITextBox, IListBox {
void IControl.Paint( ) {…}
void ITextBox.SetText(string text) {…}
void IListBox.SetItems(string[] items) {…}
}
上面的例子中,類ComboBox實(shí)現(xiàn)了三個接口:IControl,ITextBox和IListBox。如果認(rèn)為ComboBox不僅實(shí)現(xiàn)了IControl接口,而且在實(shí)現(xiàn)ITextBox和IListBox的同時(shí),又分別實(shí)現(xiàn)了它們的父接口IControl。實(shí)際上,對接口ITextBox 和IListBox 的實(shí)現(xiàn),分享了對接口IControl 的實(shí)現(xiàn)。
我們對C#的接口有了較全面的認(rèn)識,基本掌握了怎樣應(yīng)用C#的接口編程,但事實(shí)上,C#的不僅僅應(yīng)用于.NET平臺,它同樣支持以前的COM,可以實(shí)現(xiàn)COM類到.NET類的轉(zhuǎn)換,如C#調(diào)用API。欲了解這方面的知識,請看下一節(jié)-接口轉(zhuǎn)換。
分享:基于C#的接口基礎(chǔ)教程之三 第三節(jié) 定義接口成員 接口可以包含一個和多個成員,這些成員可以是方法、屬性、索引指示器和事件,但不能是常量、域、操作符、構(gòu)造函數(shù)或析構(gòu)函數(shù),而且不能包含任何靜態(tài)成員。接口定
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發(fā)送Email實(shí)例(可帶附件)
- js實(shí)現(xiàn)廣告漂浮效果的小例子
- asp.net Repeater 數(shù)據(jù)綁定的具體實(shí)現(xiàn)
- Asp.Net 無刷新文件上傳并顯示進(jìn)度條的實(shí)現(xiàn)方法及思路
- Asp.net獲取客戶端IP常見代碼存在的偽造IP問題探討
- VS2010 水晶報(bào)表的使用方法
- ASP.NET中操作SQL數(shù)據(jù)庫(連接字符串的配置及獲取)
- asp.net頁面?zhèn)髦禍y試實(shí)例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲過程實(shí)現(xiàn)分頁示例代碼
.Net教程Rss訂閱編程教程搜索
.Net教程推薦
- asp.net文字轉(zhuǎn)成圖片
- asp.net中倒計(jì)時(shí)自動跳轉(zhuǎn)頁面的實(shí)現(xiàn)方法(使用javascript)
- ASP.NET程序設(shè)計(jì)的10大技巧
- c#自定義控件中事件的處理
- Asp.net 中將漢字轉(zhuǎn)換成拼音的方法
- VS2010、VS2008等項(xiàng)目的默認(rèn)瀏覽器修改方法(圖文)
- ASP.NET筆記之 ListView 與 DropDownList的使用
- 基于.NET平臺的分層架構(gòu)實(shí)戰(zhàn)(二)需求分析與數(shù)據(jù)庫設(shè)計(jì)
- asp.net中使用repeater和PageDataSource搭配實(shí)現(xiàn)分頁代碼
- 揭秘ASP.NET常用的26個優(yōu)化性能方法
- 相關(guān)鏈接:
- 教程說明:
.Net教程-基于C#的接口基礎(chǔ)教程之五(7)
。