La herencia permite definir una clase como ampliación de otra, reutilizando su estructura y comportamiento.
Es una herramienta clave para reducir la duplicación de código y organizar jerárquicamente los conceptos del programa.

La sintaxis es: class Perro extends Animal {}


  • Una superclase es toda clase que es ampliada por otra.

  • Una subclase es toda clase que hereda de otra. Hereda todos los campos y métodos públicos o protegidos de su superclase, y puede añadir o modificar comportamientos.


Jerarquía de herencia

Las clases relacionadas por herencia forman una jerarquía, donde una subclase puede heredar de otra subclase, y así sucesivamente.

En Java, todas las clases heredan, directa o indirectamente, de la clase Object, a menos que se especifique lo contrario. Esto convierte a Object en la raíz del sistema de tipos.


Herencia múltiple en Java

Java no permite herencia múltiple de clases, pero la admite de forma parcial mediante el uso de interfaces, que pueden ser implementadas por múltiples clases de manera simultánea.


Polimorfismo y sustitución

La herencia está íntimamente ligada al concepto de Polimorfismo, que permite tratar objetos de distintas subclases como si fueran instancias de una superclase común.
Esto posibilita escribir código más flexible y extensible, especialmente en métodos que operan sobre tipos genéricos o abstractos.

También se relaciona con la Sustitución, que permite utilizar una subclase allí donde se espera una superclase, haciendo que el comportamiento se adapte dinámicamente al tipo real del objeto.