Esperemos que no sea demasiado académico ...
Digamos que necesito números reales y complejos en mi biblioteca SW.
Basado en la relación is-a (o aquí ), el número real es un número complejo, donde b en la parte imaginaria del número complejo es simplemente 0.
Por otro lado, mi implementación sería que ese hijo extiende al padre, por lo que en el padre RealNumber tendría una parte real y el niño ComplexNumber agregaría arte imaginario.
También hay una opinión, que la herencia es malvada .
Recuerdo que ayer, cuando estaba aprendiendo OOP en la universidad, mi profesor dijo que este no es un buen ejemplo de herencia ya que el valor absoluto de esos dos se calcula de manera diferente (pero para eso tenemos una sobrecarga de métodos / polimorfismo, ¿verdad?). .
Mi experiencia es que a menudo usamos la herencia para resolver DRY, como resultado, a menudo tenemos clases abstractas artificiales en la jerarquía (a menudo tenemos problemas para encontrar nombres porque no representan objetos de un mundo real).