Wie verwende ich Komposition mit Vererbung?

Ich werde versuchen, meine Frage im Kontext eines einfachen Beispiels zu stellen ...

Sagen wir mal ich habe ein abstraktes Basisklasse Auto. Auto hat ein grundlegendes Maschinenobjekt. Ich habe eine Methode StartEngine () in der abstrakten Car-Klasse, die das Starten der Engine an das Engine-Objekt delegiert.

Wie kann ich Unterklassen von Car (wie Ferrari) gestatten, das Engine-Objekt als bestimmten Motortyp (z. B. TurboEngine) zu deklarieren? Benötige ich eine andere Fahrzeugklasse (TurboCar)?

Ich erbe ein einfaches altes Engine-Objekt und kann es in meinen Car-Unterklassen nicht als TurboEngine deklarieren (oder überschreiben).

BEARBEITEN Ich verstehe, dass ich jede Unterklasse von Engine in meine Engine-Referenz in meiner Ferrari-Klasse einfügen kann ... aber wie kann ich Methoden aufrufen, die nur die TurboEngine verfügbar macht? Da myEngine als Basis-Engine vererbt wird, ist keines der Turbo-Elemente enthalten.

Vielen Dank

Antworten auf die Frage(20)

Ihre Antwort auf die Frage