Teoría de Herencia – Fundamentos de Programación Orientada a Objetos

Herencia, mecanismo mediante se puede definir una Clase Hijo sobre la base de otra Clase Padre heredando aquellos miembros de la Clase Padre.

Teoría de Herencia

Generalización / Especialización

Se produce cuando dos o más clases tienen muchas de sus partes en común (atributos y métodos), lo que deriva en la creación de una nueva Clase con todas las características comunes.

En resumen Generalización / Especialización: es la relación de una Clase más general y una Clase más específica.

Se puede decir que:
Persona es una superClase (Padre)
Alumno es una subClase (Hijo)
Docente es una subClase (Hijo)

Herencia

Es el mecanismo mediante el cual se puede definir una Clase (Hijo) sobre la base de otra Clase (Padre) heredando aquellos miembros de la Clase Padre (atributos y métodos) que hayan sido declarados como public, protected o sin especificador de acceso. Brinda a las clases una estructura jerárquica.   Si una Clase Padre declara un miembro como protected:

  • Permite el acceso al miembro desde el interior de la Clase Hijo y desde una Clase que se encuentra en el mismo paquete.
  • Impide el acceso al miembro desde el exterior del paquete.

Las clases Hijo:

  • Heredan características de las clases Padre.
  • Añaden características específicas que las diferencian.

El Constructor no es un miembro, por tanto las clases Hijo no pueden heredarlo.

Interpretación Gráfica

Declaración de una Clase que hereda de otra:

public Class Hijo extends Padre {
   // Cuerpo de la subClase
   …
}

Relación “es-un” o “es-una”

Permite establecer una jerarquía de especialización mediante la relación «es-un» o «es-una«.
Teniendo a Animal como nivel superior
un Mamífero es un Animal
un Ave es un Animal
una Vaca es un Mamífero
un Pato es un Ave

Teniendo a Animal como nivel superior

public Class Animal { … }

un Mamífero es un Animal

public Class Mamifero extends Animal { … }

un Ave es un Animal

public Class Ave extends Animal { … }

una Vaca es un Mamífero

public Class Vaca extends Mamifero { … }

un Pato es un Ave

public Class Pato extends Ave { … }

Si una Clase no tiene una Clase Padre explícita, implícitamente su Clase Padre es la Clase Object, que define e implementa un comportamiento requerido por todas las clases dentro del Sistema Java.

En el caso de la clase Animal, sería:

public Class Animal extends Object {…}

Uso de super

El Constructor no es un miembro, por tanto las clases Hijo no pueden heredarlo.
Puede invocarse al constructor de la Clase Padre desde la Clase Hijo utilizando la palabra super de la siguiente forma:

super(argumentos);

Tiene que ser la primera sentencia dentro del Constructor de la Clase Hijo.

Contenido relacionado:

Te puede interesar

Deja una respuesta

Tu dirección de correo electrónico no será publicada.