Mam nadzieję, że nie jest zbyt akademicki ...
Powiedzmy, że potrzebuję prawdziwych i złożonych liczb w mojej bibliotece SW.
Na podstawie relacji is-a (lub tutaj ) liczba rzeczywista jest liczbą zespoloną, gdzie b w urojonej części liczby zespolonej wynosi po prostu 0.
Z drugiej strony, moja implementacja byłaby taka, że dziecko rozszerza element nadrzędny, więc w elemencie RealNumber miałbym prawdziwą część, a element potomny ComplexNumber dodałby sztukę wymyśloną.
Istnieje również opinia, że dziedzictwo jest złe .
Pamiętam, jak wczoraj, kiedy uczyłem się OOP na uniwersytecie, mój profesor powiedział, że to nie jest dobry przykład dziedziczenia, ponieważ wartość bezwzględna tych dwóch jest obliczana inaczej (ale do tego mamy przeciążenie metody / polimorfizm, prawda?) .. .
Z mojego doświadczenia wynika, że często używamy dziedziczenia do rozwiązywania problemu DRY, w wyniku czego często mamy sztuczne abstrakcyjne klasy w hierarchii (często mamy problem ze znalezieniem nazw, ponieważ nie reprezentują one obiektów z prawdziwego świata).