Как использовать композицию с наследованием?

Я попытаюсь задать свой вопрос в контексте простого примера ...

Допустим, у меня есть абстрактный базовый класс автомобилей. Автомобиль имеет - базовый объект двигателя. У меня есть метод StartEngine () в абстрактном классе Car, который делегирует запуск двигателя объекту Engine.

Как мне разрешить подклассам Car (таким как Ferrari) объявлять объект Engine как определенный тип двигателя (например, TurboEngine)? Нужен ли мне другой класс автомобилей (TurboCar)?

Я наследую простой старый объект Engine и не могу повторно объявить (или переопределить) его как TurboEngine в моих подклассах Car.

РЕДАКТИРОВАТЬ: Я понимаю, что могу подключить любой подкласс Engine к ссылке myEngine в моем классе Ferrari ... но как я могу вызывать методы, которые предоставляет только TurboEngine? Поскольку myEngine наследуется как базовый движок, ничего из турбо-содержимого не включено.

Спасибо!

Ответы на вопрос(10)

Ваш ответ на вопрос