Espero que não seja muito acadêmico ...
Digamos que eu precise de números reais e complexos na minha biblioteca de SW.
Com base no relacionamento is-a (ou aqui ), o número real é um número complexo, onde b na parte imaginária do número complexo é simplesmente 0.
Por outro lado, minha implementação seria que esse filho estende o pai, portanto, no pai RealNumber, eu teria uma parte real e o filho ComplexNumber acrescentaria arte imaginária.
Também há uma opinião de que herança é má .
Lembro-me como ontem, quando eu estava aprendendo POO na universidade, disse meu professor, este não é um bom exemplo de herança, já que o valor absoluto desses dois é calculado de maneira diferente (mas para isso temos método de sobrecarga / polimorfismo, certo?) .. .
Minha experiência é que muitas vezes usamos herança para resolver DRY, como resultado, muitas vezes temos classes abstratas artificiais na hierarquia (muitas vezes temos problemas para encontrar nomes, pois eles não representam objetos do mundo real).