日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

基于C#的接口基礎(chǔ)教程之五(6)_.Net教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:基于C#的接口基礎(chǔ)教程之四
  第四節(jié)、訪問接口   對接口成員的訪問   對接口方法的調(diào)用和采用索引指示器訪問的規(guī)則與類中的情況也是相同的。如果底層成員的命名與繼承而來的高層成員一致,那么底層成員將覆蓋同

  那么,對于一個接口成員,怎樣確定由哪一個類的成員來實(shí)現(xiàn)呢?即一個接口成員映射的是哪一個類的成員?在這里,我們敘述一下接口映射的過程。假設(shè)類C實(shí)現(xiàn)了一個接口IInterface,Member是接口IInterface中的一個成員,在定位由誰來實(shí)現(xiàn)接口成員Member,即Member的映射過程是這樣的:

  1、如果C中存在著一個顯式接口成員執(zhí)行體,該執(zhí)行體與接口IInterface 及其成員Member相對應(yīng),則由它來實(shí)現(xiàn)Member 成員。

  2、如果條件(1)不滿足,且C中存在著一個非靜態(tài)的公有成員,該成員與接口成員Member相對應(yīng),則由它來實(shí)現(xiàn)Member 成員。

  3、如果上述條件仍不滿足,則在類C定義的基類列表中尋找一個C 的基類D,用D來代替C。

  4、重復(fù)步驟1-- 3 ,遍歷C的所有直接基類和非直接基類,直到找到一個滿足條件的類的成員。

  5、如果仍然沒有找到,則報告錯誤。

  下面是一個調(diào)用基類方法來實(shí)現(xiàn)接口成員的例子。類Class2 實(shí)現(xiàn)了接口Interface1,類Class2 的基類Class1 的成員也參與了接口的映射,也就是說類Class2 在對接口Interface1進(jìn)行實(shí)現(xiàn)時,使用了類Class1提供的成員方法F來實(shí)現(xiàn)接口Interface1的成員方法F:

interface Interface1 {
 void F( ) ;
}
class Class1 {
 public void F( ) { }
 public void G( ) { }
}
class Class2: Class1, Interface1 {
 new public void G( ) {}
}

  注意:接口的成員包括它自己定義的成員,而且包括該接口所有父接口定義的成員。在接口映射時,不僅要對接口定義體中顯式定義的所有成員進(jìn)行映射,而且要對隱式地從父接口那里繼承來的所有接口成員進(jìn)行映射。
  在進(jìn)行接口映射時,還要注意下面兩點(diǎn):

  1、在決定由類中的哪個成員來實(shí)現(xiàn)接口成員時,類中顯式說明的接口成員比其它成員優(yōu)先實(shí)現(xiàn)。

  2、使用Private、protected和static修飾符的成員不能參與實(shí)現(xiàn)接口映射。例如:

interface ICloneable {
 object Clone( ) ;
}
class C: ICloneable {
 object ICloneable.Clone( ) {…}
 public object Clone( ) {…}
}

  例子中成員ICloneable.Clone 稱為接口ICloneable 的成員Clone 的實(shí)現(xiàn)者,因?yàn)樗秋@式說明的接口成員,比其它成員有著更高的優(yōu)先權(quán)。

  如果一個類實(shí)現(xiàn)了兩個或兩個以上名字、類型和參數(shù)類型都相同的接口,那么類中的一個成員就可能實(shí)現(xiàn)所有這些接口成員:

interface IControl {
 void Paint( ) ;
}
interface IForm {
 void Paint( ) ;
}
class Page: IControl, IForm {
 public void Paint( ) {…}
}

  這里,接口IControl和IForm的方法Paint都映射到了類Page中的Paint方法。當(dāng)然也可以分別用顯式的接口成員分別實(shí)現(xiàn)這兩個方法:

interface IControl {
 void Paint( ) ;
}
interface IForm {
 void Paint( ) ;
}
class Page: IControl, IForm {
 public void IControl.Paint( ) {
 //具體的接口實(shí)現(xiàn)代碼
}
public void IForm.Paint( ) {
 //具體的接口實(shí)現(xiàn)代碼
}
}

分享:基于C#的接口基礎(chǔ)教程之三
  第三節(jié) 定義接口成員   接口可以包含一個和多個成員,這些成員可以是方法、屬性、索引指示器和事件,但不能是常量、域、操作符、構(gòu)造函數(shù)或析構(gòu)函數(shù),而且不能包含任何靜態(tài)成員。接口定

來源:模板無憂//所屬分類:.Net教程/更新時間:2008-08-22
相關(guān).Net教程