選單
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

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”開頭定義介面,這是一個良好的實踐,這樣你自己和他人更容易記住它是一個介面而不是一個類。

預設情況下,介面的成員是 abstractpublic 的。

注意: 介面可以包含屬性和方法,但不能包含欄位。

要訪問介面方法,介面必須被另一個類“實現”(類似於繼承)。要實現一個介面,請使用 : 符號(就像繼承一樣)。介面方法的實現體由“實現”類提供。請注意,在實現介面時,您不必使用 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" 物件)。
  • 介面方法沒有實體,實體由“實現”類提供。
  • 在實現一個介面時,你必須覆蓋它的所有方法
  • 介面可以包含屬性和方法,但不能包含欄位/變數。
  • 介面成員預設是 abstractpublic 的。
  • 介面不能包含建構函式(因為它不能用於建立物件)

為何以及何時使用介面?

1) 實現安全性 - 隱藏某些細節,只顯示物件的(介面的)重要細節。

2) C# 不支援“多重繼承”(一個類只能繼承自一個基類)。然而,這可以透過介面來實現,因為一個類可以實現多個介面。注意: 要實現多個介面,請用逗號將它們分開(請參閱下面的示例)。


×

聯絡銷售

如果您想將 W3Schools 服務用於教育機構、團隊或企業,請傳送電子郵件給我們
sales@w3schools.com

報告錯誤

如果您想報告錯誤,或想提出建議,請傳送電子郵件給我們
help@w3schools.com

W3Schools 經過最佳化,旨在方便學習和培訓。示例可能經過簡化,以提高閱讀和學習體驗。教程、參考資料和示例會不斷審查,以避免錯誤,但我們無法保證所有內容的完全正確性。使用 W3Schools 即表示您已閱讀並接受我們的使用條款Cookie 和隱私政策

版權所有 1999-2024 Refsnes Data。保留所有權利。W3Schools 由 W3.CSS 提供支援