class
がどのような、メンバー(メソッド、フィールド、プロパティー)を持つのかの定義を与えるためのモノinterface
を継承した class
は、interface
で定義されてるメンバーを実装しなければならない(しないとコンパイルエラー)interface
を使って、class
が何を実装するのかを規定できるpublic interface ISample {
// メソッド
void Method();
// フィールド
int Field;
// プロパティー
int Property { get; set; }
// getter のみを規定したプロパティー、setter は実装してもしなくてもいい
int ReadOnlyProperty { get; }
}
interface
自身にアクセス修飾子はあるが、中身には無い(定義したものは全て public
)interface
を継承した interface
も定義できる。(class
と同じように IChild : IParent
という表記)interface
には大きく2種類のの使われ方がある
interface
の名前は I + [ 動詞 ] + able
になる
IEnumerable<T>
, IDisposable
interface
の名前は I + [ 名詞 ]
になる
IList
, iCollection
namespace | interface | 用途 | リンク |
---|---|---|---|
System.Collections.Generic | IEnumerable<T> |
MSDN |
interface
は実装を持たず、振る舞いだけを定義することから、戻り値や引数を実装された class
で指定せずに interface
で与えることによって、テスト時には用意しやすいもので置き換えることができる。