第三節 定義介面成員
介面可以包含一個和多個成員,這些成員可以是方法、屬性、索引指標和事件,但不能是常量、域、操作符、建構函式或解構函式,而且不能包含任何靜態成員。介面定義建立新的定義空間,並且介面定義直 接包含的介面成員定義將新成員引入該定義空間。
說明:
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 這些成員:
interface IMyTest{
string this[int index] { get; set; }
event EventHandler E ;
void F(int value) ;
string P { get; set; }
}
public delegate void EventHandler(object sender, EventArgs e) ;
下面例子中介面IStringList包含每個可能類型成員的介面:一個方法,一個屬性,一個事件和一個索引。
public delegate void StringListEvent(IStringList sender);
public interface IStringList
{
void Add(string s);
int Count { get; }
event StringListEvent Changed;
string this[int index] { get; set; }
}
共2頁: 上一頁 1 [2]下一頁