基于C#的接口基礎(chǔ)教程之五_.Net教程
推薦:基于C#的接口基礎(chǔ)教程之四 第四節(jié)、訪問接口 對接口成員的訪問 對接口方法的調(diào)用和采用索引指示器訪問的規(guī)則與類中的情況也是相同的。如果底層成員的命名與繼承而來的高層成員一致,那么底層成員將覆蓋同
第五節(jié)、實(shí)現(xiàn)接口
1、顯式實(shí)現(xiàn)接口成員
為了實(shí)現(xiàn)接口,類可以定義顯式接口成員執(zhí)行體(Explicit interface member implementations)。顯式接口成員執(zhí)行體可以是一個方法、一個屬性、一個事件或者是一個索引指示器的定義,定義與該成員對應(yīng)的全權(quán)名應(yīng)保持一致。
using System ;
interface ICloneable {
object Clone( ) ;
}
interface IComparable {
int CompareTo(object other) ;
}
class ListEntry: ICloneable, IComparable {
object ICloneable.Clone( ) {…}
int IComparable.CompareTo(object other) {…}
}
上面的代碼中ICloneable.Clone 和IComparable.CompareTo 就是顯式接口成員執(zhí)行體。
說明:
1、不能在方法調(diào)用、屬性訪問以及索引指示器訪問中通過全權(quán)名訪問顯式接口成員執(zhí)行體。事實(shí)上,顯式接口成員執(zhí)行體只能通過接口的實(shí)例,僅僅引用接口的成員名稱來訪問。
2、顯式接口成員執(zhí)行體不能使用任何訪問限制符,也不能加上abstract, virtual, override或static 修飾符。
3、顯式接口成員執(zhí)行體和其他成員有著不同的訪問方式。因?yàn)椴荒茉诜椒ㄕ{(diào)用、屬性訪問以及索引指示器訪問中通過全權(quán)名訪問,顯式接口成員執(zhí)行體在某種意義上是私有的。但它們又可以通過接口的實(shí)例訪問,也具有一定的公有性質(zhì)。
4、只有類在定義時(shí),把接口名寫在了基類列表中,而且類中定義的全權(quán)名、類型和返回類型都與顯式接口成員執(zhí)行體完全一致時(shí),顯式接口成員執(zhí)行體才是有效的,例如:
class Shape: ICloneable {
object ICloneable.Clone( ) {…}
int IComparable.CompareTo(object other) {…}
}
使用顯式接口成員執(zhí)行體通常有兩個目的:
1、因?yàn)轱@式接口成員執(zhí)行體不能通過類的實(shí)例進(jìn)行訪問,這就可以從公有接口中把接口的實(shí)現(xiàn)部分單獨(dú)分離開。如果一個類只在內(nèi)部使用該接口,而類的使用者不會直接使用到該接口,這種顯式接口成員執(zhí)行體就可以起到作用。
2、顯式接口成員執(zhí)行體避免了接口成員之間因?yàn)橥l(fā)生混淆。如果一個類希望對名稱和返回類型相同的接口成員采用不同的實(shí)現(xiàn)方式,這就必須要使用到顯式接口成員執(zhí)行體。如果沒有顯式接口成員執(zhí)行體,那么對于名稱和返回類型不同的接口成員,類也無法進(jìn)行實(shí)現(xiàn)。
下面的定義是無效的,因?yàn)镾hape 定義時(shí)基類列表中沒有出現(xiàn)接口IComparable。
class Shape: ICloneable
{
object ICloneable.Clone( ) {…}
}
class Ellipse: Shape
{
object ICloneable.Clone( ) {…}
}
分享:基于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ǔ)教程之五
。