インタフェースとクラス

クラスの抽象度ヒエラルキー
インタフェース>抽象クラス>具象クラス

⑴インタフェース
他クラスからの「扱い方」を定義したもの
(クラスから型だけを取り出したもの)

interface Sample{
static final フィールド
public 抽象メソッド

・多重実現・多重継承 可能
・インタフェースはポリモーフィズムのために存在する。
インスタンス化できない

⑵クラス
①抽象クラス
インタフェースとクラスの両方の性質を持ったクラスで、抽象メソッドが存在する。

抽象クラス{
様々なフィールド
具象メソッド{}
抽象メソッド

・抽象クラス extends 抽象クラス
・具象クラス extends 抽象クラス
インスタンス化できない(インタフェースと同じ)

②具象クラス
具象メソッドのみ存在する。(抽象メソッドがあってはいけない)

具象クラス{
様々なフィールド
具象メソッド{}

・抽象メソッドは実装を持たないため、具象クラスとなるサブクラスが抽象メソッドをオーバーライドして、実装を提供しなければならない。