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>, IDisposableinterface の名前は I + [ 名詞 ] になる
IList, iCollection| namespace | interface | 用途 | リンク |
|---|---|---|---|
| System.Collections.Generic | IEnumerable<T> |
MSDN |
interface は実装を持たず、振る舞いだけを定義することから、戻り値や引数を実装された class で指定せずに interface で与えることによって、テスト時には用意しやすいもので置き換えることができる。