【Java】なぜインターフェースがいるのか?

Javaのクラス継承を学んでいると、

特に抽象度が高い抽象クラスをインターフェースとして特別扱いするとありました。

抽象クラスだけでいいと思い、インターフェースの存在理由が気になり、調べた内容をまとめます。

インターフェースのメリット

Javaは、多重継承を禁止していますが、インターフェースを用いることで多重継承を可能にできるとのこと。

多重継承とは何か、なぜ禁止にしているのか、なぜインターフェースは、多重継承を許されるのかということを以下で説明していきます。

多重継承とは

複数の親クラスから継承して子クラスを作成することです。

例:クラスAとクラスBを継承するクラスCを作成する。

このプログラムは、エラーになります。

多重継承を禁止にする理由

クラスAとクラスBにメソッドabがあった場合、両者を継承しているクラスCは、メソッドabを呼び出す際、どちらのメソッドを呼び出せばよいのか分かりません。

また、単一継承であれば、ツリー状に枝分かれするだけですが、多重継承だと複雑で混乱してしまいます。

しかし、インターフェースは、メソッドを宣言するのみ(抽象メソッド)で具体的な処理内容はありません。

従って、複雑の親クラスに同じメソッドがあったとしても、継承することができるのです。

まとめ

Javaは多重継承を禁止している。

インターフェースだけ多重継承を可能としている。

理由:

複数の親クラスで同じメソッドがある場合、どちらのメソッドを呼び出せばよいか分からない。

クラス階層が複雑化。

インターフェースは、抽象メソッドのみ宣言可能であるため、多重継承を可能にしている。