ホームページ >バックエンド開発 >C#.Net チュートリアル >C# ではインターフェイスはどのように機能しますか?
インターフェイスは、クラスまたは構造体によって実装されるコントラクトを定義します。メソッド、プロパティ、イベント、インデクサーを含めることができます。インターフェイスはクラスに似ていますが、データを保持せず、インターフェイスが実行できる動作 (より正確には、インターフェイスを実装するクラスが実行できる動作) のみを指定する点が異なります。
クラスは 1 つの動作または複数のインターフェイスを実装できます。インターフェイス メンバーを実装するには、クラスには、インターフェイス メンバーと同じメソッド定義、つまり同じ名前とシグネチャを持つパブリック メンバーが必要です。
たとえば、IComparer は、2 つのオブジェクトを比較するメソッドのコントラクトを定義する 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(); }
インターフェイスを使用すると、複数のソースからの動作を 1 つのクラスに含めることができます。 C# では C のような多重継承が許可されていないため、インターフェイスは C# で多重継承を実装する方法です。
インターフェイスの欠点の 1 つは、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 中国語 Web サイトの他の関連記事を参照してください。