ルールを定める仕組み「インターフェース(Interface)」とは?
C#のインターフェース(Interface)は、「こういう機能を持っていてください」という約束ごと(仕様)を定義する仕組みです。
実装(中身)は持たず、実際の処理はクラス側に任せるのが特徴です。
インターフェースの特徴
interface
キーワードで定義
- メソッド・プロパティの宣言のみ(C#8以降は一部実装可)
- 多重継承が可能(クラスは複数のインターフェースを実装できる)
- 抽象クラスよりも「軽く柔軟」な設計に向いている
インターフェースの基本構文
public interface IShape {
void Draw(); // メソッドの定義(実装なし)
string Name { get; set; } // プロパティの定義
}
実装クラスの例
public class Circle : IShape {
public string Name { get; set; }
public void Draw() {
Console.WriteLine("○ を描画");
}
}
インターフェースを使うメリット
- 異なるクラスでも共通のルールで扱える
- クラス設計が柔軟になる(多重実装可能)
- テストや差し替えがしやすくなる(依存性注入など)
例:IShape型として扱う
IShape shape = new Circle();
shape.Draw(); // → ○ を描画
複数のインターフェースを実装
public interface IMovable {
void Move();
}
public interface IAttackable {
void Attack();
}
public class Robot : IMovable, IAttackable {
public void Move() {
Console.WriteLine("移動中");
}
public void Attack() {
Console.WriteLine("攻撃!");
}
}
抽象クラスとの違い
項目 |
インターフェース |
抽象クラス |
実装の有無 |
基本なし(C#8以降は可) |
あり(共通処理を含められる) |
多重継承 |
可能 |
不可(1つのみ) |
使い分け |
共通ルールを定めたいとき |
共通処理も定義したいとき |
まとめ
インターフェース(Interface)は、「この機能を持つべき」というルールを定義するための仕組みです。
実装はクラス側に任されるため、柔軟で拡張しやすい設計ができます。
多態性を活かした開発や、疎結合なプログラム設計には欠かせない存在です!