インターフェイス (C# リファレンス)interface (C# Reference)

インターフェイスには、メソッドプロパティイベントインデクサーのシグネチャのみが含まれています。An interface contains only the signatures of methods, properties, events or indexers. インターフェイスを実装するクラスまたは構造体は、インターフェイス定義で指定されているインターフェイスのメンバーを実装する必要があります。A class or struct that implements the interface must implement the members of the interface that are specified in the interface definition. 次の例の ImplementationClass クラスは、SampleMethod を返す、パラメーターのない void メソッドを実装する必要があります。In the following example, class ImplementationClass must implement a method named SampleMethod that has no parameters and returns void.

使用例を含む詳細については、「インターフェイス」を参照してください。For more information and examples, see Interfaces.

Example

interface ISampleInterface
{
    void SampleMethod();
}

class ImplementationClass : ISampleInterface
{
    // Explicit interface member implementation: 
    void ISampleInterface.SampleMethod()
    {
        // Method implementation.
    }

    static void Main()
    {
        // Declare an interface instance.
        ISampleInterface obj = new ImplementationClass();

        // Call the member.
        obj.SampleMethod();
    }
}

インターフェイスは、名前空間またはクラスのメンバーであり、次のメンバーのシグネチャを含むことができます。An interface can be a member of a namespace or a class and can contain signatures of the following members:

インターフェイスは、1 つ以上の基底インターフェイスから継承できます。An interface can inherit from one or more base interfaces.

基本型のリストに基底クラスとインターフェイスが含まれる場合は、基底クラスがリストの最初に表示されます。When a base type list contains a base class and interfaces, the base class must come first in the list.

インターフェイスを実装するクラスは、そのインターフェイスのメンバーを明示的に実装できます。A class that implements an interface can explicitly implement members of that interface. 明示的に実装されているメンバーには、クラス インスタンスではアクセスできません。インターフェイスのインスタンスを使用した場合にのみアクセスできます。An explicitly implemented member cannot be accessed through a class instance, but only through an instance of the interface.

明示的なインターフェイスの実装の詳細とコード例については、「明示的なインターフェイスの実装」を参照してください。For more details and code examples on explicit interface implementation, see Explicit Interface Implementation.

Example

ここでは、インターフェイスの実装例を示します。The following example demonstrates interface implementation. この例では、インターフェイスにプロパティ宣言が含まれ、クラスに実装が含まれます。In this example, the interface contains the property declaration and the class contains the implementation. IPoint を実装するクラスのインスタンスには、整数プロパティ x および y が含まれています。Any instance of a class that implements IPoint has integer properties x and y.

interface IPoint
{
   // Property signatures:
   int x
   {
      get;
      set;
   }

   int y
   {
      get;
      set;
   }
}

class Point : IPoint
{
   // Fields:
   private int _x;
   private int _y;

   // Constructor:
   public Point(int x, int y)
   {
      _x = x;
      _y = y;
   }

   // Property implementation:
   public int x
   {
      get
      {
         return _x;
      }

      set
      {
         _x = value;
      }
   }

   public int y
   {
      get
      {
         return _y;
      }
      set
      {
         _y = value;
      }
   }
}

class MainClass
{
   static void PrintPoint(IPoint p)
   {
      Console.WriteLine("x={0}, y={1}", p.x, p.y);
   }

   static void Main()
   {
      IPoint p = new Point(2, 3);
      Console.Write("My Point: ");
      PrintPoint(p);
   }
}
// Output: My Point: x=2, y=3

C# 言語仕様C# language specification

詳細については、「C# 言語の仕様」を参照してください。For more information, see the C# Language Specification. 言語仕様は、C# の構文と使用法に関する信頼性のある情報源です。The language specification is the definitive source for C# syntax and usage.

関連項目See also