// 車両クラス (Vehicle)
class Vehicle {
// 車両の色を表すインスタンス変数
private String color;
// 車両クラスのコンストラクタ
public Vehicle(String color) {
// インスタンス変数の初期化
this.color = color;
// 暗黙的なスーパークラスのコンストラクタ呼び出しが行われたことを表示
System.out.println("Vehicleクラスのコンストラクタが呼ばれました。");
}
// 車両の色を取得するメソッド
public String getColor() {
return color;
}
}
// 自動車クラス (Car) - 車両クラスを継承
class Car extends Vehicle {
// 自動車の速度を表すインスタンス変数
private int speed;
// 自動車クラスのコンストラクタ
public Car(String color, int speed) {
// スーパークラスのコンストラクタが暗黙的に呼び出される
super(color);
// インスタンス変数の初期化
this.speed = speed;
// 暗黙的なスーパークラスのコンストラクタ呼び出しが行われたことを表示
System.out.println("Carクラスのコンストラクタが呼ばれました。");
}
// 自動車の速度を取得するメソッド
public int getSpeed() {
return speed;
}
}
// メインクラス
public class Main {
public static void main(String[] args) {
// 自動車クラスのインスタンス生成
Car car = new Car("Blue", 100);
// 車両の色と速度を表示
System.out.println("Carの色: " + car.getColor());
System.out.println("Carの速度: " + car.getSpeed());
}
}
この例では、Vehicle
クラスが親クラスであり、Car
クラスがこれを継承しています。各クラスには要件に合わせたコンストラクタが実装され、親クラスのコンストラクタが暗黙的に呼び出されることが確認できます。