基于C#的接口基礎教程之一
2007/1/8 22:43:14
第一節 接口慨述
 
    接口(interface)用來定義一種程序的協定。實現接口的類或者結構要與接口的定義嚴格一致。有了這個協定,就可以拋開編程語言的限制(理論上)。接口可以從多個基接口繼承,而類或結構可以實現多個接口。接口可以包含方法、屬性、事件和索引器。接口本身不提供它所定義的成員的實現。接口只指定實現該接口的類或接口必須提供的成員。
 
    接口好比一種模版,這種模版定義了對象必須實現的方法,其目的就是讓這些方法可以作為接口實例被引用。接口不能被實例化。類可以實現多個接口并且通過這些實現的接口被索引。接口變量只能索引實現該接口的類的實例。例子:
 
  interface IMyExample {
   string this[int index] { get ; set ; }
   event EventHandler Even ;
   void Find(int value) ;
   string Point { get ; set ; }
  }
  public delegate void EventHandler(object sender, Event e) ;
 
    上面例子中的接口包含一個索引this、一個事件Even、一個方法Find和一個屬性Point。
 
    接口可以支持多重繼承。就像在下例中,接口"IComboBox"同時從"ITextBox"和"IListBox"繼承。
 
  interface IControl {
  void Paint( ) ;
  }
  interface ITextBox: IControl {
  void SetText(string text) ;
  }
  interface IListBox: IControl {
  void SetItems(string[] items) ;
  }
  interface IComboBox: ITextBox, IListBox { }
 
    類和結構可以多重實例化接口。就像在下例中,類"EditBox"繼承了類"Control",同時從"IDataBound"和"IControl"繼承。
 
  interface IDataBound {
   void Bind(Binder b) ;
  }
  public class EditBox: Control, IControl, IDataBound {
   public void Paint( ) ;
   public void Bind(Binder b) {...}
  }
 
    在上面的代碼中,"Paint"方法從"IControl"接口而來;"Bind"方法從"IDataBound"接口而來,都以"public"的身份在"EditBox"類中實現。
 
    說明:
 
    1、C#中的接口是獨立于類來定義的。這與 C++模型是對立的,在 C++中接口實際上就是抽象基類。
 
    2、接口和類都可以繼承多個接口。
 
    3、而類可以繼承一個基類,接口根本不能繼承類。這種模型避免了 C++的多繼承問題,C++中不同基類中的實現可能出現沖突。因此也不再需要諸如虛擬繼承和顯式作用域這類復雜機制。C#的簡化接口模型有助于加快應用程序的開發。
 
    4、一個接口定義一個只有抽象成員的引用類型。C#中一個接口實際所做的,僅僅只存在著方法標志,但根本就沒有執行代碼。這就暗示了不能實例化一個接口,只能實例化一個派生自該接口的對象。
 
    5、接口可以定義方法、屬性和索引。所以,對比一個類,接口的特殊性是:當定義一個類時,可以派生自多重接口,而你只能可以從僅有的一個類派生。
  接口與組件
 
    接口描述了組件對外提供的服務。在組件和組件之間、組件和客戶之間都通過接口進行交互。因此組件一旦發布,它只能通過預先定義的接口來提供合理的、一致的服務。這種接口定義之間的穩定性使客戶應用開發者能夠構造出堅固的應用。一個組件可以實現多個組件接口,而一個特定的組件接口也可以被多個組件來實現。
 
    組件接口必須是能夠自我描述的。這意味著組件接口應該不依賴于具體的實現,將實現和接口分離徹底消除了接口的使用者和接口的實現者之間的耦合關系,增強了信息的封裝程度。同時這也要求組件接口必須使用一種與組件實現無關的語言。目前組件接口的描述標準是IDL語言。
 
    由于接口是組件之間的協議,因此組件的接口一旦

下一頁
返回列表
返回首頁 主站蜘蛛池模板: 国内精品久久久久久久影视麻豆| 最近2019中文字幕mv免费看| 国产91在线|欧美| 色一情一乱一乱91av| 天堂网在线观看| 中文字幕在线亚洲精品| 日韩色视频一区二区三区亚洲| 亚洲欧美一区二区三区在线| 福利在线小视频| 国产99久久久久久免费看| 麻豆乱码国产一区二区三区| 国产精品久久久久影视青草| 996热在线视频| 好男人官网在线播放| 中文字幕无码免费久久9一区9| 日韩日韩日韩日韩日韩| 亚洲人成电影院在线观看| 激情伊人五月天久久综合| 免费福利在线视频| 美女胸被狂揉扒开吃奶二次元| 国产免费丝袜调教视频| 欧美污视频网站| 国产精品毛片无码| 99久久综合狠狠综合久久aⅴ| 嫩草影院免费观看| 中文字幕在线视频一区| 日本免费高清一本视频| 久久精品夜夜夜夜夜久久| 极品少妇被猛的白浆直喷白浆| 亚洲成人在线网| 欧美黑人又粗又大久久久| 人人玩人人添人人| 皇后羞辱打开双腿调教h| 午夜爽爽爽视频| 老司机午夜性生免费福利| 国产亚洲精品国产福利在线观看| 黄网站色成年片大免费高清| 国产激爽大片高清在线观看| 100款夜间禁用b站软件下载| 国产精品高清m3u8在线播放| 97国产在线视频公开免费|