Herencia

La herencia es una de las tres propiedades fundamentales de la Programación Orientada a Objetos (POO). Según el documento, este concepto se desarrolla a través de los siguientes puntos:  

1. Definición y Estructura
  • Construcción de clases: La herencia permite construir nuevas clases a partir de clases base que han sido definidas previamente.  
  • Redefinición: Al crear una nueva clase mediante herencia, es posible añadir nuevos datos o acciones, así como redefinir los ya existentes.  
  • Jerarquía: Este proceso de creación sucesiva establece una jerarquía de clases que se puede representar como un árbol.  

2. Funcionamiento de la Jerarquía

  • Relación Padre-Hijo: Las clases situadas en la parte superior del árbol jerárquico se consideran «clases padres» o superclases, mientras que las situadas abajo son subclases.  
  • Acceso a comportamiento: Una subclase hereda automáticamente los atributos y comportamientos (datos y métodos) de su superclase.  
  • Superclase abstracta: Existe un tipo especial de superclase denominada «abstracta», la cual se utiliza exclusivamente para crear subclases y no permite la creación de instancias directas (objetos) de sí misma.  
3. Método de Encadenamiento

Cuando se envía un mensaje a un objeto para que ejecute una acción, el sistema sigue un proceso de búsqueda jerárquica:  

  1. La búsqueda del método comienza en la clase del receptor.  
  2. Si no se encuentra el método allí, la búsqueda se desplaza hacia la superclase de esa clase.  
  3. Este proceso continúa hacia arriba en la cadena de superclases hasta que se encuentra el método o la cadena se termina.  
  4. Si se encuentra, el método se ejecuta; de lo contrario, se produce un mensaje de error.  
4. Ventajas de la Herencia
  • Reutilización (Reuso): Permite que tanto las estructuras de datos como los procedimientos sean compartidos, lo que facilita la creación de librerías y sistemas de software reusable.  
  • Abstracción: Al utilizar componentes reusables, el programador puede tratar los problemas en un nivel de abstracción superior.  
  • Mantenimiento y Claridad: Reduce la interdependencia entre los componentes, aportando mayor claridad al diseño del programa.