044-インタフェース-インタフェースの定義と実装 【新人エンジニアが最初に覚えたい100のJava文法】

ユーチューブ動画

インタフェースの定義と実装について解説します。

ソースコード

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タッチタイプゲームとして遊ぶことができます。