016 抽象クラス(抽象メソッドと具象メソッド) 008 解答例

// 抽象クラス Vehicle
abstract class Vehicle {
    // 抽象メソッド startEngine を宣言
    public abstract void startEngine();
}

// 具象クラス Car
class Car extends Vehicle {
    // startEngine メソッドの実装
    @Override
    public void startEngine() {
        System.out.println("Car Engine started. Vroom! Vroom!");
    }
}

// 具象クラス Motorcycle
class Motorcycle extends Vehicle {
    // startEngine メソッドの実装
    @Override
    public void startEngine() {
        System.out.println("Motorcycle Engine started. Rrrrrrrrrrr!");
    }
}

// メインクラス
public class Main {
    public static void main(String[] args) {
        // Car クラスのインスタンスを作成
        Car myCar = new Car();
        
        // startEngine() メソッドを呼び出して車のエンジンを始動
        myCar.startEngine();  // 出力: Car Engine started. Vroom! Vroom!

        // Motorcycle クラスのインスタンスを作成
        Motorcycle myMotorcycle = new Motorcycle();
        
        // startEngine() メソッドを呼び出してバイクのエンジンを始動
        myMotorcycle.startEngine();  // 出力: Motorcycle Engine started. Rrrrrrrrrrr!
    }
}

この例では、Vehicle クラスが抽象メソッド startEngine() を宣言しています。それを継承する具象クラス CarMotorcycle が、それぞれの乗り物のエンジンを始動させるメソッドを実装しています。Main クラスで Car クラスと Motorcycle クラスをインスタンス化し、それぞれの startEngine() メソッドを呼び出すことで、車とバイクのエンジンが始動される様子が表示されます。

出力結果:

Car Engine started. Vroom! Vroom!
Motorcycle Engine started. Rrrrrrrrrrr!

「016 抽象クラス」問題集リスト