Dziedziczenie a skład [duplikat]
Możliwy duplikat:
Wolisz kompozycję niż dziedziczenie?
Zastanawiam się, dlaczego (lub w jakich przypadkach) należy rozważyć dziedziczenie zamiast kompozycji, gdy jest tak wiele wad:
jeśli zaimplementujemy / nadpisujemy metodę w podklasie, która wywołuje metodę nadklasy, nie ma gwarancji, że inna wersja naszej superklasy (może trochę biblioteki) nie złamie naszego kodujeśli pojawi się nowa metoda w nadklasie z taką samą sygnaturą, jaką ma metoda podklasy, ale z innym typem powrotu nasza klasa nie będzie się kompilować.Dlatego nie mogę sobie wyobrazić, jak na Ziemi możemy na tym polegać. Autor superklasy może chcieć poprawić wydajność, a nasz kod klienta może ulec awarii.
Moje pytania to:
Jak rozwiązać te problemy (np. W standardowych bibliotekach Java)?Kiedy używać dziedziczenia i kompozycji?