TECH I.S.

C# インターフェイス


インターフェース

C#で抽象化を実現させるもう一つの方法は、インターフェイスを使用することです。

interfaceは完全に "抽象クラス"であり、抽象メソッドとプロパティ(本体は空です)のみを含めることができます。

{.language-java .techis-white}
// interface
interface Animal
{
  void animalSound(); // interface method (does not have a body)
  void run(); // interface method (does not have a body)
}

インターフェースの先頭を文字「I」で始めることは、自分や他の人がそれがクラスではなくインターフェースであることを覚えやすくするため、良い習慣と考えられています。

デフォルトでは、インターフェースのメンバーはabstractpublicです。

注:インターフェイスにはプロパティとメソッドを含めることができますが、フィールドは含めることができません。

インターフェイスメソッドにアクセスするには、インターフェイスが別のクラスによって "実装" (継承のようなもの)されている必要があります。インターフェイスを実装するには、:記号を使用します(継承と同様)。インターフェイスメソッドの本体は、"implement"クラスによって提供されます。を使用する必要はありません。インターフェイスを実装するときoverrideキーワードは使う必要がないことに注意して下さい。

{.language-java .techis-white}
// 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#は、「多重継承」をサポートしていません(クラスは1つの基本クラスからしか継承できません)。しかし、インターフェイスを使用することで、クラスが複数のインターフェイスを実装することができるため、これを実現することができます。

注:複数のインターフェイスを実装するには、カンマで区切ります(以下の例を参照)。


プログラミング学習を加速させる

プログラミングをプロの講師に教えてもらいませんか。

テックアイエスのプログラミングスクールは初心者も大歓迎です。年齢制限もありません。転職・副業に強く、挫折させない手厚いサポートで稼ぐ力を身につけましょう!

スクールの詳細