C# 中的介面是如何工作的?


介面定義了一個將由類或結構實現的契約。它可以包含方法、屬性、事件和索引器。介面類似於類,但它不包含任何資料,只指定其可以執行的行為(更準確地說,實現它的類可以執行的行為)。

一個類可以實現一個或多個介面。要實現介面成員,類應該具有與介面成員相同的方法定義的公共成員,即相同名稱和簽名。

例如,`IComparer` 是在 `System.Collections` 名稱空間中定義的介面,它定義了比較兩個物件的方法的契約。`Car` 類實現了 `IComparer` 介面。

public interface IDriver{
   void Drive();
}
public class Car : IDriver{
   public string Name { get; set; }

   public int Speed { get; set; }
   public void Drive(){
      Console.WriteLine($"{Name}: {Speed}");
   }
}

介面上的所有成員都是隱式抽象的,並且沒有任何實現細節。所有介面成員都是公共的。不能對介面成員使用訪問修飾符。實現介面的類必須提供實現介面的公共方法。

介面可以擴充套件其他介面,例如:

public interface IPerformer { void Perform(); }
public interface ISinger : IPerformer{
   void Sing();
}

介面允許您在一個類中包含來自多個源的行為。由於 C# 不像 C++那樣允許多重繼承,介面是 C# 中實現多重繼承的一種方式。

介面的一個缺點是,當您使用它們公開 API 時,它們不如類靈活。當您更改介面的契約時,實現該介面的所有類都會中斷,需要更新以實現該介面。

示例

 線上演示

using System;
class Program{
   static void Main(){
      var carOne = new Car { Name = "Honda", Speed = 100 };
      var carTwo = new Car { Name = "Toyota", Speed = 70 };
      carOne.Drive();
      carTwo.Drive();
   }
}
public interface IDriver{
   void Drive();
}
public class Car : IDriver{
   public string Name { get; set; }
   public int Speed { get; set; }
   public void Drive(){
      Console.WriteLine($"{Name}: {Speed}");
   }
}

輸出

Honda: 100
Toyota: 70

更新於:2021年5月19日

475 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告