問題
抽象クラス Vehicle を定義し、その中に抽象メソッド startEngine() を宣言します。この抽象クラスを継承する具象クラス Car と Motorcycle を作成し、それぞれ startEngine() メソッドを実装します。さらに、Vehicle クラスをインスタンス化してみて、どうしてエラーが発生するのかを考えてみてください。
ヒント
抽象クラス Vehicle を定義し、その中に抽象メソッド startEngine() を宣言するという問題に対する考察を行います。
- 抽象クラス Vehicle:
Vehicleクラスは、車両(Vehicle)を表す抽象クラスとして定義されています。startEngine()メソッドはエンジンを起動する操作を表す抽象メソッドです。
- 具象クラス Car と Motorcycle:
CarクラスとMotorcycleクラスは、Vehicleクラスを継承します。- 各具象クラスでは
startEngine()メソッドがオーバーライドされ、車やバイクのエンジン起動操作が実装されます。
- Vehicle クラスのインスタンス化:
Vehicleクラスは抽象クラスであり、直接インスタンス化することができません。- インスタンスを生成するには、具象クラス(
CarまたはMotorcycle)を使用する必要があります。
- エラーが発生する理由:
- 抽象クラスは直接インスタンスを生成できないため、
Vehicleクラスをインスタンス化しようとするとエラーが発生します。 - 抽象クラスは、具象クラスを通じて利用されることが意図されています。そのため、直接抽象クラスをインスタンス化することは禁止されています。
- 抽象クラスは直接インスタンスを生成できないため、
考察の結果、Vehicle クラスのインスタンス化がエラーとなるのは、抽象クラスの性質からくるものであり、この挙動は抽象クラスを適切に利用するためのルールの一環です。
→解答例


