ユーチューブ動画
インターフェースの定義と実装について解説します。
ソースコード
1 2 3 4 5 6 7 8 9 |
interface Special { int SPECIAL_POINT_BASE = 10; void showSpecial(); } class Note implements Special{ public void showSpecial() { System.out.println((SPECIAL_POINT_BASE * 2) + "point"); } } |
解説
インターフェースの定義と実装について解説します。
以前の動画では、継承について確認しました。Javaは単一継承です。
Javaでは、自分のクラスに対して、一つのクラスしかスーパークラスを持つことができません。
この継承しか知らないとクラスが増えたときに困ったことが発生します。
たとえば、クラスXとクラスYがあり、スーパークラスAがあったとします。
単一継承ですから、このままであれば、問題ありません。
ここにクラスZを作成します。
クラスYとクラスZを1つのグループで扱いたい場合どうすればよいでしょうか。
すでにクラスYはスーパークラスAを持っていますから、スーパークラスAの上にさらにスーパークラスBを作り、Zを継承させればよいのですが、面倒なことにクラスXも仲間に入ってしまいます。
現実世界でもありますよね。飲み会に誘うときに、Yさんだけを誘いたいんだけど、どうしてもXさんもついてくる・・・といった具合です。
そこで登場するのが、インターフェースです。
インターフェースは、継承と併用OKの文法で、
かつクラスを複数のインターフェースに所属させることができます。
先ほどの例の場合は、クラスYとクラスZにインターフェースBを実装させれば、
クラスYとクラスZを同じグループで扱うことができます。
イメージは理解できたでしょうか?
サンプルコードで確認しましょう。
インターフェースの定義側は、interfaceインターフェース名と記述します。
インターフェースで定義できることは2つだけです。定数の宣言と抽象メソッドの定義です。
抽象メソッドを忘れてしまったという方はぜひ以前の動画を参考にしてください。
インターフェースの中では、abstractを付けなくても、抽象メソッドになります。
インターフェースを実装するときには、implementsというキーワードを使います。
Implementsインターフェース名とするだけで実装できます。
複数のインターフェースを実装するときにはカンマで区切ります。
抽象メソッドが含まれている場合は、オーバーライドする必要があります。
オーバーライドするとどうなるか、については、次の動画で解説します。
ここでは、インターフェースでできることは定数の宣言と抽象メソッドの定義、インターフェースを実装する際には、implementsを使うというポイントだけ押さえておきましょう。
以上、インターフェースの定義と実装について解説しました。
このサンプルコードをJavaタッチタイプゲームとして遊ぶことができます。