国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

基于C#的接口基礎教程之一

2024-07-21 02:30: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、接口可以定義方法、屬性和索引。所以,對比一個類,接口的特殊性是:當定義一個類時,可以派生自多重接口,而你只能可以從僅有的一個類派生。

共2頁: 上一頁 1 [2] 下一頁



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 吉林省| 兖州市| 洛扎县| 西吉县| 德兴市| 宁陕县| 任丘市| 江达县| 汉川市| 新乐市| 湖南省| 大姚县| 昔阳县| 虹口区| 通榆县| 灵寿县| 长寿区| 伊金霍洛旗| 梁山县| 衡水市| 长汀县| 库车县| 赣榆县| 德格县| 怀仁县| 内乡县| 施甸县| 潼关县| 中宁县| 鲁甸县| 民县| 阳春市| 大关县| 浙江省| 深泽县| 宿州市| 湖北省| 紫阳县| 蒲城县| 威海市| 方山县|