抽象クラスのコンストラクタは、派生クラスがインスタンス化される際に実行される初期化処理を含みます。抽象クラスのコンストラクタの実装方法は、通常のクラスのコンストラクタと同様です。ただし、抽象クラス自体は直接インスタンス化できないため、そのコンストラクタは派生クラスからのみ呼び出されます。
以下に、抽象クラスのコンストラクタの使用例をいくつか示します。
abstract class Vehicle {
private String brand;
public Vehicle(String brand) {
this.brand = brand;
}
public abstract void start();
}
class Car extends Vehicle {
private int numOfDoors;
public Car(String brand, int numOfDoors) {
super(brand);
this.numOfDoors = numOfDoors;
}
public void start() {
System.out.println("The car is starting.");
}
}
public class Main {
public static void main(String[] args) {
Car car = new Car("Toyota", 4);
car.start();
}
}
上記の例では、Vehicle
という抽象クラスがあります。このクラスはbrand
というプライベートなメンバ変数を持ち、コンストラクタで初期化されます。また、start
という抽象メソッドも定義されています。
Car
はVehicle
を継承した具象クラスであり、追加のメンバ変数numOfDoors
を持ちます。Car
のコンストラクタでは、super(brand)
を呼び出してVehicle
のコンストラクタを実行し、numOfDoors
も初期化されます。さらに、start
メソッドもオーバーライドされています。
Main
クラスでは、Car
クラスのインスタンスを生成し、そのstart
メソッドを呼び出しています。実行結果として、"The car is starting."という出力が表示されます。
このように、抽象クラスのコンストラクタは派生クラスのインスタンス化時に使用され、初期化処理を行うための重要な役割を果たします。派生クラスで特定の初期化処理が必要な場合には、抽象クラスのコンストラクタを適切に実装することが重要です。