介面是純粹的契約定義,語法設計極簡卻精確,支援修飾詞控制可見性、多重繼承構建豐富契約體系。
[attributes] [modifiers] interface 識別符 [: 介面基底列表] { 介面主體 }
| 修飾詞 | 適用場景 | 說明 |
|---|---|---|
new | 巢狀介面 | 隱藏繼承而來的同名成員 |
public | 頂層/巢狀 | 公開可見性(預設) |
internal | 頂層/巢狀 | 僅組件內可見 |
protected | 巢狀 | 僅包含類別及衍生類可見 |
private | 巢狀 | 僅包含類別可見 |
同一修飾詞不可重複;new 僅用於巢狀介面。
public,不可加任何修飾詞
interface IControl { void Paint(); }
interface ITextBox : IControl { void SetText(string); }
interface IListBox : IControl { void SetItems(string[]); }
interface IComboBox : ITextBox, IListBox {} // 多重繼承!
| 特性 | 類別繼承 | 介面繼承 |
|---|---|---|
| 繼承類型 | 實現繼承 + 說明繼承 | 純說明繼承 |
| 多重繼承 | 單一繼承 | 支援多重繼承 |
| 建構函式 | 鏈式呼叫 | 無建構函式 |
| 欄位/狀態 | 繼承 | 無狀態 |
private/internal 跨組件不可繼承)介面應細粒度、高內聚:ITextBox 專注文字編輯,IListBox 專注列表管理,IComboBox 組合兩者。避免「胖介面」強迫實現者實作不需功能。
掌握介面定義語法與繼承機制,是設計乾淨、可組合、可演進契約體系的基石。