インターフェイス interface -saka

①フィールドとメソッドに以下の修飾子が自動的につく。
public static final(クラス定数)
abstract(抽象メソッド)
②オブジェクト化できない。

インターフェイスは継承(実装implements)されることを前提としている。
class Car implements iVehicle
インターフェイスのメソッドはすべてオーバーライドされなければいけない。
④抽象クラスと同様に、インターフェイスを実装しているクラスをインターフェイス名(インターフェイス型)で変数として扱うことができる。

    • -

■抽象クラスとインターフェイスの違い
インターフェイスは抽象メソッドしか持てない。抽象クラスは具象(処理内容のある)メソッドを持てる。
インターフェイスは定数しか持てない。

クラスを多重継承することはできないけれど、インターフェイスは複数実装することができる。→インターフェイスは処理内容のあるメソッドを持てないので複数実装したとしても処理内容の選択で迷うことはない。名前だけの存在だから。
→ただ、フィールドは定数を持つことができるので競合する可能性はある。多重実装した場合に複数の同じ名前の定数があった場合はコンパイルエラーになります。エラーを回避するために、定数名の前にインターフェイスの名前を付ける方法がある。
インターフェイス名.定数名」で扱うことで解決できる。もともとインターフェイスが持っている定数はstaticなので「クラス名.変数名」で扱える。