今日もJavaの知識を深めるために、一緒に問題を解きましょう。
問題
以下のプログラムを実行した場合の出力を選んでください。正しい選択肢を選んでください。
class Vehicle {
void startEngine() {
System.out.println("Starting the vehicle engine");
}
}
class Car extends Vehicle {
@Override
void startEngine() {
System.out.println("Starting the car engine");
}
}
public class Main {
public static void main(String[] args) {
Vehicle myVehicle = new Car();
myVehicle.startEngine();
}
}
選択肢
- A. Starting the vehicle engine
- B. Starting the car engine
- C. コンパイルエラー
- D. 実行時エラー
答えと解説
回答を見る
答え
B. Starting the car engine
解説
解説のポイント:
- オーバーライドの仕組み
- ポリモーフィズムの理解
- 参照型と実際のオブジェクト型の違い
Javaでは、オーバーライド(上書き)はオブジェクト指向プログラミングの重要な概念です。
上記のコードを見てみましょう。Vehicle
クラスのstartEngine
メソッドは、Car
クラスの中でオーバーライドされています。
これにより、Vehicle
の参照型を持つmyVehicle
がCar
のインスタンスを指している場合、メソッド呼び出しは実際のオブジェクト型であるCar
クラスのstartEngine
を呼び出します。
つまり、実行時には"Starting the car engine"
がコンソールに出力されます。