Spróbuję zadać moje pytanie w kontekście prostego przykładu ...Jak używać kompozycji z dziedziczeniem?
Załóżmy, że mam abstrakcyjny samochód klasy podstawowej. Samochód ma podstawowy obiekt silnika. Mam metodę StartEngine() w abstrakcyjnej klasie samochodów, która deleguje uruchamianie silnika do obiektu Engine.
Jak zezwolić na podklasy samochodu (np. Ferrari) na zadeklarowanie obiektu Engine jako określonego typu silnika (np. TurboEngine)? Czy potrzebuję kolejnej klasy samochodów (TurboCar)?
Odziedziczę zwykły stary obiekt Engine i nie mogę ponownie zadeklarować (lub przesłonić) go jako TurboEngine w podklasach mojego samochodu.
EDIT: Rozumiem, że mogę podłączyć każdą podklasę silnika w odniesieniu myEngine w mojej klasie Ferrari ... ale w jaki sposób można wywołać metody że tylko TurboEngine naraża? Ponieważ myEngine jest dziedziczony jako silnik bazowy, żaden z elementów turbo nie jest zawarty.
Dzięki!
Ooooh! Wspaniale! Nigdy nie wiedziałem, że w tagu SO istnieje tag * car-analogy *! –