C#接口的定義詳解
全面解析C#接口的定義
C#接口的定義從技術(shù)上講,接口是一組包含了函數(shù)型方法的數(shù)據(jù)結(jié)構(gòu)。通過這組數(shù)據(jù)結(jié)構(gòu),客戶代碼可以調(diào)用組件對象的功能。
C#接口的定義一般形式為:
- [attributes] [modifiers] interface identifier [:base-list] {interface-body}[;]
C#接口的定義說明:
· attributes(可選):附加的定義性信息。
· modifiers(可選):允許使用的修飾符有new和四個訪問修飾符。分別是:new、public、protected、internal、private。在一個接口定義中同一修飾符不允許出現(xiàn)多次,new修飾符只能出現(xiàn)在嵌套接口中,表示覆蓋了繼承而來的同名成員。The public, protected, internal, and private修飾符定義了對接口的訪問權(quán)限。
· 指示器和事件。
· identifier:接口名稱。
· base-list(可選):包含一個或多個顯式基接口的列表,接口間由逗號分隔。
· interface-body:對接口成員的定義。
· 接口可以是命名空間或類的成員,并且可以包含下列成員的簽名: 方法、屬性、索引器 。
· 一個接口可從一個或多個基接口繼承。
接口這個概念在C#和Java中非常相似。接口的關(guān)鍵詞是interface,一個接口可以擴(kuò)展一個或者多個其他接口。按照慣例,接口的名字以大寫字母"I"開頭。下面的代碼是C#接口的一個例子,它與Java中的接口完全一樣:
- interface IShape {
- void Draw ( ) ;
- }
如果你從兩個或者兩個以上的接口派生,父接口的名字列表用逗號分隔,如下面的代碼所示:
- interface INewInterface: IParent1, IParent2 { }
然而,與Java不同,C#中的接口不能包含域(Field)。另外還要注意,在C#中,接口內(nèi)的所有方法默認(rèn)都是公用方法。在Java中,方法定義可以帶有public修飾符(即使這并非必要),但在C#中,顯式為接口的方法指定public修飾符是非法的。例如,下面的C#接口將產(chǎn)生一個編譯錯誤。
- interface IShape { public void Draw( ) ; }
下面的例子定義了一個名為IControl 的接口,接口中包含一個成員方法Paint:
- interface IControl {
- void Paint( ) ;
- }
在下例中,接口 IInterface從兩個基接口 IBase1 和 IBase2 繼承:
- interface IInterface: IBase1, IBase2 {
- void Method1( ) ;
- void Method2( ) ;
- }
接口可由類實(shí)現(xiàn)。實(shí)現(xiàn)的接口的標(biāo)識符出現(xiàn)在類的基列表中。例如:
- class Class1: Iface1, Iface2 {
- // class 成員。
- }
類的基列表同時包含基類和接口時,列表中首先出現(xiàn)的是基類。例如:
- class ClassA: BaseClass, Iface1, Iface2 {
- // class成員。
- }
以下的代碼段定義接口IFace,它只有一個方法:
- interface IFace {
- void ShowMyFace( ) ;
- }
不能從這個定義實(shí)例化一個對象,但可以從它派生一個類。因此,該類必須實(shí)現(xiàn)ShowMyFace抽象方法:
- class CFace:IFace
- {
- public void ShowMyFace( ) {
- Console.WriteLine(" implementation " ) ;
- }
- }
C#接口的定義之基接口
一個接口可以從零或多個接口繼承,那些被稱為這個接口的顯式基接口。當(dāng)一個接口有比零多的顯式基接口時,那么在接口的定義中的形式為,接口標(biāo)識符后面跟著由一個冒號":"和一個用逗號","分開的基接口標(biāo)識符列表。
C#接口的定義之接口基:
接口類型列表說明:
· 一個接口的顯式基接口必須至少同接口本身一樣可訪問。例如,在一個公共接口的基接口中指定一個私有或內(nèi)部的接口是錯誤的。
· 一個接口直接或間接地從它自己繼承是錯誤的。
· 接口的基接口都是顯式基接口,并且是它們的基接口。換句話說,基接口的集合完全由顯式基接口和它們的顯式基接口等等組成。在下面的例子中
- interface IControl {
- void Paint( ) ;
- }
- interface ITextBox: IControl {
- void SetText(string text) ;
- }
- interface IListBox: IControl {
- void SetItems(string[] items) ;
- }
- interface IComboBox: ITextBox, IListBox { }
IComboBox 的基接口是IControl, ITextBox, 和 IlistBox。
· 一個接口繼承它的基接口的所有成員。換句話說,上面的接口IComboBox就像Paint一樣繼承成員SetText 和 SetItems。
· 一個實(shí)現(xiàn)了接口的類或結(jié)構(gòu)也隱含地實(shí)現(xiàn)了所有接口的基接口。
C#接口的定義之接口主體
一個接口的接口主體定義接口的成員。
- interface-body:
- { interface-member-declarationsopt }
C#接口的定義及相關(guān)內(nèi)容就向你介紹到這里,希望對你了解和學(xué)習(xí)掌握C#接口的定義有所幫助。
【編輯推薦】