La herencia es una propiedad que permite a los objetos ser construidos a partir de otros objetos, es decir, la capacidad de un objeto para utilizar estructuras de datos y métodos presentes en sus antepasados. También recibe el nombre de generalización
3.4.2.- Relación de herencia (Generalización)
El objetivo principal de la herencia es la reutilización, poder utilizar código desarrollado con anterioridad. La herencia supone una clase base y una jerarquía de clases que contiene las clases derivadas. Las clases derivadas pueden heredar el código y los datos de su clase base, añadiendo su propio código especial y datos, incluso cambiar aquellos elementos de la clase base que necesitan ser diferentes, es por esto que los atributos, métodos y relaciones de una clase se muestran en el nivel más alto de la jerarquía en el que son aplicables.
Tipos:
- Herencia simple: Una clase puede tener sólo un ascendente. Es decir una subclase puede heredar datos y métodos de una única clase base.
- Herencia múltiple: Una clase puede tener más de un ascendente inmediato, adquirir datos y métodos de más de una clase.
Representación:
En el diagrama de clases se representa como una asociación en la que el extremo de la clase base tiene un triángulo.
Cuando se utiliza el concepto de herencia es la clase que contiene los métodos y atributos que van a ser heredados por la clase derivada.
Cuando se utiliza la herencia es la clase que hereda los atributos y métodos de la clase base.
Ejercicio Propuesto
En nuestro diagrama tenemos Alumnos y Profesores. Aún no hemos hablado de su definición y estructura, pero en nuestro sistema tanto un alumno como un profesor tienen unas características comunes como el nombre, la fecha de nacimiento o el correo electrónico por el hecho de ser personas:
Transforma este diagrama para hacer uso de la herencia añadiendo una clase "Persona".