// 抽象クラス 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()
を宣言しています。それを継承する具象クラス Car
と Motorcycle
が、それぞれの乗り物のエンジンを始動させるメソッドを実装しています。Main
クラスで Car
クラスと Motorcycle
クラスをインスタンス化し、それぞれの startEngine()
メソッドを呼び出すことで、車とバイクのエンジンが始動される様子が表示されます。
出力結果:
Car Engine started. Vroom! Vroom!
Motorcycle Engine started. Rrrrrrrrrrr!