インタフェース (抽象型)
Javaのインタフェースは、暗黙的にpublicな抽象メソッドのみを持つことが許される参照型である。定数および入れ子になった型の定義は許される。Javaではクラスの継承にextendsキーワードを使用するが、インタフェースの実装にはimplementsキーワードを使用する。インタフェースを拡張して新たなインタフェースを派生させるときはextendsキーワードを使う。
上記では、互いに異なる基底クラスを持つ派生クラス群であっても、Flyableインタフェースを導入することで一様に扱うことができる例を示している。
Javaの列挙型は抽象クラスjava.lang.Enumから暗黙的に派生する参照型であり、任意のインタフェースを実装することができる。
なお、Java 8以降ではインタフェースのデフォルトメソッドにより、実装の多重継承も限定的にサポートするようになった。また、インタフェースが静的メソッドを持つこともできるようになった。Java 8で導入されたラムダ式およびメソッド参照は、実装すべきメソッドをひとつだけ持つ「関数型インタフェース」(functional interface) によって実現されている。