介面 (C# 程式設計手冊)
更新:2010 年 7 月
介面會描述屬於任何類別或結構的相關功能群組。 您可以使用 interface 關鍵字定義介面,如下列範例所示:
interface IEquatable<T>
{
bool Equals(T obj);
}
介面是由方法、屬性、事件、索引子或這四種成員型別的任意組合所組成。 介面不能包含常數、欄位、運算子、執行個體建構函式、解構函式或類型。 它不能包含靜態成員。 介面成員本身就是公用的,不可包含任何存取修飾詞。
當類別或結構實作介面時,類別或結構會提供介面所定義之所有成員的實作。 與可以繼承的基底類別 (Base Class) 功能相較,介面本身無法提供讓類別或結構繼承的功能。 不過,如果基底類別實作了介面,衍生類別 (Derived Class) 就會繼承該實作。 衍生類別是指以隱含方式實作介面。
類別和結構 (Struct) 會實作介面,就像類別會繼承基底類別 (Base Class) 或結構一樣,但是有兩個例外:
類別或結構都可實作多個介面。
當類別或結構實作某個介面時,只會接收方法名稱和簽章,因為介面本身不含任何實作,如下列範例中所示。
public class Car : IEquatable<Car> { public string Make {get; set;} public string Model { get; set; } public string Year { get; set; } // Implementation of IEquatable<T> interface public bool Equals(Car car) { if (this.Make == car.Make && this.Model == car.Model && this.Year == car.Year) { return true; } else return false; } }
IEquatable<T> 介面會向物件使用者表示,此物件可以判斷它是否與同型別的其他物件相等,而介面使用者並不需要知道實作的方式為何。
若要實作介面成員,對應的類別成員必須是公用、非靜態,而且具有與介面成員相同的名稱和簽章。 類別的屬性和索引子 (Indexer),可以為介面中所定義之屬性或索引子定義額外的存取子。 例如,介面可以宣告含有 get 周邊的屬性。 實作介面的類別可以以 get 和 set 存取子宣告相同的屬性。 不過,如屬性或索引子使用明確實作,則存取子必須相符。 如需關於明確實作的詳細資訊,請參閱介面屬性 (C# 程式設計手冊)
介面和介面成員是抽象的,介面並未提供預設實作。 如需詳細資訊,請參閱抽象和密封類別以及類別成員。
介面可以繼承其他介面。 類別可以多次繼承介面 (透過它所繼承的基底類別,或者透過其他介面所繼承的介面)。 但是,分類只能實作介面一次,而且介面必須在 class ClassName : InterfaceName 中宣告為類別定義的一部分。 如果因為您繼承的基底類別實作介面,因此繼承該介面,則其實作由基底類別提供。 基底類別也可以使用虛擬成員實作介面成員。 在這種情況下,衍生類別可以透過覆寫虛擬成員的方式變更介面行為。 如需虛擬成員的詳細資訊,請參閱多型 (C# 程式設計手冊)。
介面概觀
介面有下列屬性:
介面類似於抽象基底類別,實作介面的任何非抽象型別都必須實作所有成員。
介面無法直接執行個體化。
介面可以包含事件、索引子、方法和屬性。
介面不包含方法實作。
類別和結構可以實作一個以上的介面。
介面本身可繼承自多個介面。
本章節內容
明確介面實作 (C# 程式設計手冊)
說明如何建立介面特有的類別成員。HOW TO:明確實作介面成員 (C# 程式設計手冊)
提供如何明確實作介面成員的範例。HOW TO:明確實作兩個介面的成員 (C# 程式設計手冊)
提供如何明確使用繼承實作介面成員的範例。
相關章節
介面屬性 (C# 程式設計手冊)
說明如何宣告介面上的屬性。介面中的索引子 (C# 程式設計手冊)
說明如何宣告介面上的索引子。HOW TO:實作介面事件 (C# 程式設計手冊)
說明介面如何宣告事件。類別和結構 (C# 程式設計手冊)
描述 C# 如何使用物件、類別及結構。繼承 (C# 程式設計手冊)
說明 C# 如何實作繼承。方法 (C# 程式設計手冊)
說明 C# 程式撰寫模型 (Programming Model) 中具名方法的概念。多型 (C# 程式設計手冊)
描述類別如何在 C# 中做為一個以上的型別。抽象和密封類別以及類別成員 (C# 程式設計手冊)
描述 abstract 和 sealed 關鍵字如何影響繼承。屬性 (C# 程式設計手冊)
說明 C# 中屬性的概念。事件 (C# 程式設計手冊)
說明 C# 中事件的概念。索引子 (C# 程式設計手冊)
說明 C# 中索引子的概念。
精選書籍章節
Learning C# 3.0: Master the Fundamentals of C# 3.0 的 Interfaces
請參閱
參考
概念
變更記錄
日期 |
記錄 |
原因 |
---|---|---|
2010 年 7 月 |
區別實作和繼承。 釐清可以和不可以包含在介面中的項目。 |
客戶回函。 |