介面繼承是純說明繼承:僅繼承成員簽名,不繼承實現。這與類別的實現繼承本質不同,賦予介面強大的組合彈性。
interface IDerived : IBase1, IBase2internal/private 禁止)
interface IControl { void Paint(); }
interface ITextBox : IControl { void SetText(string); }
interface IListBox : IControl { void SetItems(string[]); }
interface IComboBox : ITextBox, IListBox {} // 擁有 Paint、SetText、SetItems
IComboBox 同時繼承 ITextBox 與 IListBox,兩者共同繼承 IControl,形成鑽石結構。IComboBox 成員集合 = ITextBox ∪ IListBox = {Paint, SetText, SetItems},Paint 僅出現一次。
IControl.Paint)| 維度 | 類別繼承 | 介面繼承 |
|---|---|---|
| 繼承內容 | 實現 + 契約 | 僅契約 |
| 多重繼承 | 不支援 | 支援 |
| 建構函式 | 有 | 無 |
| 欄位/狀態 | 繼承 | 無 |
| 存取修飾詞 | 影響繼承可見性 | 介面成員恆 public |
ICloneable、ISerializable)default interface methods 為介面繼承引入預設實現,需謹慎使用避免鑽石歧義精通介面繼承機制,是設計可組合、可演進、低耦合契約體系的核心技能。