半人前プログラマーの技術談議

開発した物と,C#を入門者向けに解説した記事を書いています!

【C# オブジェクト指向】インターフェース part2-9

calendar

reload

こんにちは!シロウです!

今回はインターフェースについて解説します!

インターフェース

インターフェースとは

インターフェースは,メソッドの定義を記述したものです.

抽象メソッドのみを持った抽象クラスと言えば考えやすいと思います.

インターフェース内で宣言したメソッドはアクセス修飾子とabstract修飾子を付ける事ができません

宣言したメソッドは,抽象メソッドと同じ扱いになります.

また,アクセスレベルはpublicになります

(メソッドの先頭には public abstract が付いていると言う事です.)

 

インターフェースは,interface キーワード使います.

 

インターフェースは,クラスに実装する事ができます.

実装は,クラスの継承と同じように「:(コロン)」を使って記述します.

 

実際に記述して実行してみます.

 

ソースコード

 

実行結果

 

抽象クラスの時と,実行結果は変わらないです.

また,抽象メソッドと同じように,インターフェースで宣言したメソッドは,実装したクラス内で宣言しなおす必要があります.(宣言しないとコンパイルエラーになります.)

言わば,メソッドの実装の強制です.

 

多重継承ができない

抽象クラスとインターフェースの機能,両方とも解説してきました.

どちらも,継承先,実装先にメソッドの実装を強制する事ができます

しかも,抽象クラスとインターフェースを比較すると,インターフェースは抽象クラスの下位互換です.

表にするとこんな感じですね.

それなら,インターフェースは要らなくなりますよね?

 

しかし,多重継承という問題があります.

多重継承とは,複数のクラスから継承する事です.

1つのサブクラスに対して,複数のスーパークラスを持つ事です.

C#では多重継承をすることができません

それを解消するのが,インターフェースです.

インターフェースは1つのクラスに複数実装する事ができます.

また,継承と同時に使う事ができます.

複数実装する時の記述は,「,(コンマ)」を使って記述します.

 

例えば,このように記述します.

 

使用例としては,こんな感じです.

 

ソースコード

 

実行結果

 

まとめ

インターフェースは,スーパークラスで宣言したくないメソッドがある時に,インターフェースで宣言したり,

インターフェースを複数のサブクラスに実装させたい,とかそういう時に使う感じですね.

後は,型として使うというのもありますね.

型として使う場合は,宣言した変数に代入できるのは,インターフェースで実装したクラスのインスタンスのみになります

 

 

今回でオブジェクト指向編は完結となります(本編は)

まだまだ紹介しきれてない機能がありますが,番外partで紹介していこうかと思ってます.

次回からは,コレクションについて解説したいと思います!