基於C 的介面基礎教程 3

2021-04-06 16:34:43 字數 1975 閱讀 2206

第三節 定義介面成員

介面可以包含乙個和多個成員,這些成員可以是方法、屬性、索引指示器和事件,但不能是常量、域、操作符、建構函式或析構函式,而且不能包含任何靜態成員。介面定義建立新的定義空間,並且介面定義直 接包含的介面成員定義將新成員引入該定義空間。

說明:1、介面的成員是從基介面繼承的成員和由介面本身定義的成員。

2、介面定義可以定義零個或多個成員。介面的成員必須是方法、屬性、事件或索引器。介面不能包含常數、字段、運算子、例項建構函式、析構函式或型別,也不能包含任何種類的靜態成員。

3、定義乙個介面,該介面對於每種可能種類的成員都包含乙個:方法、屬性、事件和索引器。 

4、介面成員預設訪問方式是public。介面成員定義不能包含任何修飾符,比如成員定義前不能加abstract,public,protected,internal,private,virtual,override 或static 修飾符。

5、介面的成員之間不能相互同名。繼承而來的成員不用再定義,但介面可以定義與繼承而來的成員同名的成員,這時我們說介面成員覆蓋了繼承而來的成員,這不會導致錯誤,但編譯器會給出乙個警告。關閉警告提示的方式是在成員定義前加上乙個new關鍵字。但如果沒有覆蓋父介面中的成員,使用new 關鍵字會導致編譯器發出警告。 

6、方法的名稱必須與同一介面中定義的所有屬性和事件的名稱不同。此外,方法的簽名必須與同一介面中定義的所有其他方法的簽名不同。 

7、屬性或事件的名稱必須與同一介面中定義的所有其他成員的名稱不同。 

8、乙個索引器的簽名必須區別於在同一介面中定義的其他所有索引器的簽名。 

9、介面方法宣告中的屬性(attributes), 返回型別(return-type), 識別符號(identifier), 和形式引數列表(formal-parameter-lis)與乙個類的方法宣告中的那些有相同的意義。乙個介面方法宣告不允許指定乙個方法主體,而宣告通常用乙個分號結束。

10、介面屬性宣告的訪問符與類屬性宣告的訪問符相對應,除了訪問符主體通常必須用分號。因此,無論屬性是讀寫、唯讀或只寫,訪問符都完全確定。

11、介面索引宣告中的屬性(attributes), 型別(type), 和形式引數列表 (formal-parameter-list)與類的索引宣告的那些有相同的意義。

下面例子中介面imytest包含了索引指示器、事件e、 方法f、 屬性p 這些成員:

inte***ce imytest

event eventhandler e ;

void f(int value) ;

string p 

}public delegate void eventhandler(object sender, eventargs e) ; 

下面例子中介面istringlist包含每個可能型別成員的介面:乙個方法,乙個屬性,乙個事件和乙個索引。

public delegate void stringlistevent(istringlist sender);

public inte***ce istringlist

event stringlistevent changed;

string this[int index] 

} 介面成員的全權名

使用介面成員也可採用全權名(fully qualified name)。介面的全權名稱是這樣構成的。介面名加小圓點"." 再跟成員名比如對於下面兩個介面:

inte***ce icontrol 

inte***ce itextbox: icontrol  

其中paint 的全權名是icontrol.paint,gettext的全權名是itextbox. gettext。當然,全權名中的成員名稱必須是在介面中已經定義過的,比如使用itextbox.paint.就是不合理的。

如果介面是名字空間的成員,全權名還必須包含名字空間的名稱。

namespace system

} 那麼clone方法的全權名是system. idatatable.clone。

定義好了介面,接下來就是怎樣訪問介面,請看下一節--訪問介面

基於c 的介面基礎教程

說明 1 c 中的介面是獨立於類來定義的。這和 c 模型是對立的,在 c 中介面實際上就是抽象基類。2 介面和類都能繼承多個介面。3 而類能繼承乙個基類,介面根本不能繼承類。這種模型避免了 c 的多繼承問題,c 中不同基類中的實現可能出現衝突。因此也不再需要諸如虛擬繼承和顯式作用域這類複雜機制。c ...

基於C 的介面基礎教程之五 3

2 繼承介面實現 介面具有不變性,但這並不意味著介面不再發展。類似於類的繼承性,介面也可以繼承和發展。注意 介面繼承和類繼承不同,首先,類繼承不僅是說明繼承,而且也是實現繼承 而介面繼承只是說明繼承。也就是說,派生類可以繼承基類的方法實現,而派生的介面只繼承了父介面的成員方法說明,而沒有繼承父介面的...

基於C 的介面基礎教程 7

第七節 覆蓋虛介面 有時候我們需要表達一種抽象的東西,它是一些東西的概括,但我們又不能真正的看到它成為乙個實體在我們眼前出現,為此物件導向的程式語言便有了抽象類的概念。c 作為乙個物件導向的語言,必然也會引入抽象類這一概念。介面和抽象類使您可以建立元件互動的定義。通過介面,可以指定元件必須實現的方法...