ひし形クラスと長方形クラスの両方の特徴を継承した正方形クラスのようなものを多重継承と言います。
しかし、Javaでは多重継承の概念は取り入れられていません。これを解決するためにインターフェースという
機能をサポートしています。
インターフェースとは、定数とメソッドの宣言だけを集めたものです。宣言だけで実際のメソッド本体などは
実装しません。あるクラスを作ろうとした場合に、「インターフェースをインプリメントする」と、そのクラスは
インターフェースで宣言したメソッドと変数を必ず実装しなければならなくなります。
つまり、MyInterfaceというインターフェースを作り、その中で「func1」というメソッドを宣言したとします。
そして、MyClassを作ろうとした場合にMyInterfaceをインプリメントした場合、MyClassの中には必ずfunc1という
メソッドを実装する必要があるのです。
一般に継承は系統を表し、インターフェースは機能を表します。しかし、具体的な機能を決めるものではなく、
このような機能があることを明示するためのものです。したがって、インターフェースはJavaのポリモーフィズム
を実現する1つの手段であるといえます。
ここで例を示します。犬クラスは哺乳類クラスのサブクラスです。犬にも秋田犬クラス、ゴールデンレトリバークラスや
ブルドッグクラスなどがサブクラスとして存在するかもしれません。これらは動物の種類の系統でサブクラスを作って
きています。また犬には、盲導犬や麻薬捜査犬、救助犬といった分類もありますが、これらはそれぞれ、
盲人を誘導する機能を有するとか、麻薬を見つけるとか、救助するといった機能を表します。
つまり、犬の種類とは関係ありません。したがって、これら機能(インタフェース)をインプリメントした犬クラスが
盲導犬クラスというように定義できるのです。
今の世の中では盲導象や盲導猫というのは存在しませんが、もしかすると将来盲導猫というものが
できたとすれば、猫クラスのサブクラスで、盲導インターフェースをインプリメントして盲導猫クラスを
作ることができます。