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