¿Qué es la Herencia en Java?

Exactamente, la herencia es uno de los pilares de la programación orientada a objetos en Java. Según el documento, permite que una clase (clase hija o subclase) herede los atributos y métodos de otra (clase padre o superclase), facilitando la reutilización del código.

Aquí tienes los puntos clave de la herencia en Java:

1. La palabra reservada extends

Para indicar que una clase hereda de otra, se utiliza la palabra extends.

  • Sintaxis: public class Hija extends Padre { ... }
  • Java no permite la herencia múltiple de clases; es decir, una clase solo puede heredar directamente de una única clase padre.
2. La jerarquía y la clase Object

Un detalle muy importante que menciona el texto es que en Java existe una jerarquía universal:

  • Si no especificas una clase padre con extends, Java hace que tu clase herede automáticamente de la clase Object.
  • Esto significa que todas las clases en Java tienen, por defecto, métodos de Object como clone(), equals(), toString(), wait() o notify().
3. Acceso a la Superclase: super

Así como usábamos this para referirnos al objeto actual, usamos la palabra super para referirnos a la clase padre:

  • En Constructores: Se usa super() para llamar al constructor de la clase padre. Esto debe ser siempre la primera línea del constructor de la clase hija.
  • En Métodos: Si la clase hija sobrescribe un método del padre pero queremos usar la versión original del padre, usamos super.nombreMetodo().
4. Sobrescritura de métodos (Overriding)

La herencia permite que una clase hija modifique el comportamiento de un método heredado para adaptarlo a sus necesidades. Para que sea una sobrescritura válida, el método en la clase hija debe tener exactamente el mismo nombre, tipo de retorno y parámetros que en la clase padre.

5. Tipos de clases especiales en la herencia
  • Clases Abstractas (abstract): Son clases que no se pueden instanciar (no puedes hacer new de ellas). Sirven exclusivamente como modelos para que otras clases hereden de ellas. Pueden contener métodos abstractos (sin código, solo la firma) que las hijas están obligadas a implementar.
  • Clases Finales (final): Si declaras una clase como final, no puede tener descendencia. Nadie puede heredar de ella.