Spero non troppo accademico ...
Diciamo che ho bisogno di numeri reali e complessi nella mia libreria SW.
Basato sulla relazione is-a (o qui ), il numero reale è un numero complesso, dove b nella parte immaginaria del numero complesso è semplicemente 0.
D'altra parte, la mia implementazione sarebbe che quel bambino estende il genitore, quindi nel genitore RealNumber avrei una parte reale e il figlio ComplexNumber aggiungerebbe arte immaginaria.
Inoltre c'è un'opinione che l' eredità sia malvagia .
Ricordo come ieri, quando stavo imparando OOP all'università, disse il mio professore, questo non è un buon esempio di eredità in quanto il valore assoluto di quei due è calcolato in modo diverso (ma per questo abbiamo un metodo di sovraccarico / polimorfismo, giusto?) .. .
La mia esperienza è che usiamo spesso l'ereditarietà per risolvere il DRY, di conseguenza abbiamo spesso classi astratte artificiali nella gerarchia (spesso abbiamo problemi a trovare nomi perché non rappresentano oggetti di un mondo reale).