Javaクラスの抽象クラス(Abstract class)

抽象クラス(abstract class)

抽象クラス(abstract class)は、下位クラスで実装される抽象的な機能を含むクラスです。つまり、抽象クラスは「抽象的な形」だけを提示し、実際の実装を下位クラスに任せるために使用されます。

抽象メソッド(abstract method)は、抽象クラス内に定義される、宣言部分だけがあり実装部分がないメソッドです。このメソッドは、抽象クラスを継承した下位クラスで実装を強制し、再定義(Overriding)させます。もし継承した抽象クラスで抽象メソッドを再定義しなければ、その下位クラスも抽象クラスでなければなりません。ただし、抽象メソッドを一つでも持つクラスは必ず抽象クラスになります。

抽象クラスだけではオブジェクトインスタンスを生成できません。つまり、newキーワードを使ってオブジェクトを宣言できないということです。不完全なメソッドである抽象メソッドを含んでいるためです。したがって、抽象クラスを継承した下位クラスで抽象メソッドを再定義した後に、下位クラスのオブジェクトとして生成できます。

抽象クラスおよびメソッドの定義

抽象クラスと抽象メソッドはabstractキーワードを使用します。抽象メソッドは実装部分がないため、メソッドを宣言した後すぐセミコロン(;)で終わります。

abstract class クラス名 {
    // メンバー変数(通常クラスのメンバー変数と同じ)
    // メソッド(通常クラスのメソッドと同じ)
   
    abstract 戻り値型 抽象メソッド名(パラメータ型 パラメータ);
}