C# 中的介面如何運作?

WBOY
發布: 2023-08-28 22:21:06
轉載
596 人瀏覽過

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
登入後複製

以上是C# 中的介面如何運作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板