Zamysł był taki, że wpierw jest rezerwacja a gdy zostanie opłacona tworzony jest bilet, więc ma wszystkie dane z rezerwacji + kilka dodatkowych
Wtedy używa się kompozycji a nie dziedziczenia. W ogóle dziedziczenia używa się rzadko, chyba ze dziedziczysz po interfejsach. Jeśli wolno ci tak zrobić, to problemu nie powinno być bo takich sytuacji jest cała masa. Ot choćby jeden interfejs dla wszystkiego co można "kupić" czyli bilet na samolot, dodatkowy bagaż itd, i ten interfejs ma jakąś metodę getPrice()
choćby. Następny interfejs na przykład dla rzeczy które można ubezpieczyć (np. bagaż) i on ma metodę w stylu getInsuranceRate()
i getInsurancePrice()
i voila. Biletów ubezpieczyć sie nie da, ale już bagaż jak najbardziej, a oba można kupić. Takich przykładów można mnożyć...