¿Cómo uso la composición con herencia?

Voy a tratar de hacer mi pregunta en el contexto de un ejemplo simple ...

Digamos que tengo un coche de clase base abstracto. El coche tiene un objeto básico del motor. Tengo un método StartEngine () en la clase abstracta Car que delega el arranque del motor al objeto Engine.

¿Cómo permito que las subclases de Car (como Ferrari) declaren el objeto Engine como un tipo específico de motor (por ejemplo, TurboEngine)? ¿Necesito otra clase de automóvil (TurboCar)?

Estoy heredando un viejo objeto Engine simple y no puedo volver a declararlo (o anularlo) como TurboEngine en mis subclases de Car.

EDITAR: Entiendo que puedo conectar cualquier subclase de Motor en mi referencia de Motor dentro de mi clase Ferrari ... pero ¿cómo puedo llamar a métodos que solo expone el TurboEngine? Debido a que myEngine se hereda como un motor base, no se incluye ninguna de las cosas turbo.

¡Gracias!

Respuestas a la pregunta(10)

Su respuesta a la pregunta