C# 介面
介面
在 C# 中,另一種實現 抽象 的方法是使用介面。
一個 interface
是一個完全的“抽象類”,它只能包含抽象方法和屬性(具有空體)。
示例
// interface
interface Animal
{
void animalSound(); // interface method (does not have a body)
void run(); // interface method (does not have a body)
}
以字母“I”開頭定義介面,這是一個良好的實踐,這樣你自己和他人更容易記住它是一個介面而不是一個類。
預設情況下,介面的成員是 abstract
和 public
的。
注意: 介面可以包含屬性和方法,但不能包含欄位。
要訪問介面方法,介面必須被另一個類“實現”(類似於繼承)。要實現一個介面,請使用 :
符號(就像繼承一樣)。介面方法的實現體由“實現”類提供。請注意,在實現介面時,您不必使用 override
關鍵字。
示例
// Interface
interface IAnimal
{
void animalSound(); // interface method (does not have a body)
}
// Pig "implements" the IAnimal interface
class Pig : IAnimal
{
public void animalSound()
{
// The body of animalSound() is provided here
Console.WriteLine("The pig says: wee wee");
}
}
class Program
{
static void Main(string[] args)
{
Pig myPig = new Pig(); // Create a Pig object
myPig.animalSound();
}
}
關於介面的說明
- 與抽象類一樣,介面不能用於建立物件(在上面的示例中,不能在 Program 類中建立 "IAnimal" 物件)。
- 介面方法沒有實體,實體由“實現”類提供。
- 在實現一個介面時,你必須覆蓋它的所有方法
- 介面可以包含屬性和方法,但不能包含欄位/變數。
- 介面成員預設是
abstract
和public
的。 - 介面不能包含建構函式(因為它不能用於建立物件)
為何以及何時使用介面?
1) 實現安全性 - 隱藏某些細節,只顯示物件的(介面的)重要細節。
2) C# 不支援“多重繼承”(一個類只能繼承自一個基類)。然而,這可以透過介面來實現,因為一個類可以實現多個介面。注意: 要實現多個介面,請用逗號將它們分開(請參閱下面的示例)。