インターフェイス (C# リファレンス)
更新 : 2007 年 11 月
インターフェイスには、メソッド、プロパティ、イベント、またはインデクサのシグネチャのみが含まれています。メンバの実装は、次の例に示すように、インターフェイスを実装するクラスまたは構造体内で行われます。
使用例
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();
}
}
インターフェイスは、名前空間またはクラスのメンバであり、次のメンバのシグネチャを含むことができます。
インターフェイスは、1 つ以上の基本インターフェイスから継承できます。
基本型のリストに基本クラスとインターフェイスが含まれる場合は、基本クラスがリストの最初に表示されます。
インターフェイスを実装するクラスは、そのインターフェイスのメンバを明示的に実装できます。明示的に実装されているメンバには、クラス インスタンスではアクセスできません。インターフェイスのインスタンスを使用した場合にのみアクセスできます。
インターフェイスの明示的な実装の詳細とコード例については、「明示的なインターフェイスの実装 (C# プログラミング ガイド)」を参照してください。
ここでは、インターフェイスの実装例を示します。この例では、インターフェイスにプロパティ宣言が含まれ、クラスに実装が含まれます。
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()
{
Point p = new Point(2, 3);
Console.Write("My Point: ");
PrintPoint(p);
}
}
// Output: My Point: x=2, y=3
C# 言語仕様
詳細については、「C# 言語仕様」の次のセクションを参照してください。
1.9 インターフェイス
3.4.5 インターフェイスのメンバ
4.2.4 インターフェイス型
10.1.2.2 インターフェイスの実装
11.2 構造体インターフェイス
13 インターフェイス