1.10 界面(Interfaces)
界面用來定義一種程序的契約。有了這個契約,就可以跑開編程語言的限制了(理論上)。而實現界面的
類或者結構要與界面的定義嚴格一致。界面可以包含以下成員:方法、屬性、索引和事件。例子:*/
interface IExample
{
string this[int index] { get; set; }
event EventHandler E;
void F(int value);
string P { get; set; }
}
public delegate void EventHandler(object sender, Event e);
/*
例子中的界面包含一個索引、一個事件E、一個方法F和一個屬性P。
界面可以支持多重繼承。就像在下例中,界面“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”類中實現。