¿Qué es la herencia en Poo? | Programación

En la programación orientada a objetos, POO para abreviar, la herencia se usa, entre otras cosas, para desarrollar una nueva clase como una extensión de las clases existentes. La clase existente se conoce como la clase base o superclase. La nueva clase heredada se llama subclase.

En la programación orientada a objetos y el desarrollo de aplicaciones, la herencia debe entenderse como un procedimiento en el que una clase, miembros de otra clase, se hace cargo. Las propiedades transferidas incluyen atributos, métodos y eventos.

En el caso de la herencia, una nueva clase o subclase se desarrolla como una extensión de una o más clases existentes (superclases). Por tanto, el objetivo de la herencia es reutilizar las propiedades de clase de nivel superior.

Con el procedimiento de herencia, es posible definir y definir los atributos, métodos y eventos comunes a varias clases en un punto central. Las propiedades de una clase que ya se han definido no deberían tener que redefinirse. Esto es especialmente cierto cuando las clases ya son muy similares.

Estructura de funcionalidad y herencia

Básicamente, hay dos clases involucradas en la herencia, para las cuales hay varios nombres. La clase heredada también se conoce como superclase o clase padre. La clase heredera conoce los nombres de clase derivada, subclase o clase hija. En la estructura de herencia, las subclases pueden ser a su vez superclases para otras clases derivadas en sentido descendente.

La jerarquía de herencia resultante también se denomina jerarquía de clases. Se puede representar visualmente en una estructura en forma de árbol conocida como herencia o diagrama de clases. La herencia múltiple es un caso especial de herencia. En tal caso, las clases tienen varias clases principales.

Por lo general, la herencia se usa de tal manera que las subclases formadas tienen habilidades más específicas que sus respectivas clases principales. Por lo tanto, derivar una clase es un proceso también conocido como especialización. La clase superior contiene propiedades y capacidades que pueden ser utilizadas por todas las subclases. Sobre la base de esto, las subclases se especializan en habilidades adicionales.

Cada clase derivada puede ser una superclase de otras subclases, cada una de las cuales tiene su propia especialización. Algunos lenguajes de programación prevén excepciones en esta estructura de herencia que impiden derivaciones posteriores. En este caso estamos hablando del final de la jerarquía de clases.

Diferencias y demarcación

Debe hacerse una distinción básica entre herencia única y múltiple. La herencia única estipula que cada clase tiene exactamente una superclase. En el caso de herencia múltiple, son posibles varias superclases por subclase.

La herencia múltiple no suele estar prevista en lenguajes de programación más modernos como Java o C # (C-Sharp). Esto tiene que ver con el hecho de que el beneficio de la herencia múltiple suele ser menor que el de los problemas asociados. Un lenguaje de programación que brinda soporte para herencia múltiple es C ++.

La herencia repetida es el proceso de heredar las mismas características varias veces en función de una clase padre múltiple. Las propiedades de una superclase múltiple también pueden estar presentes varias veces en las clases derivadas, según la semántica de la herencia. El uso múltiple resultante de los nombres de las propiedades de las superclases y subclases puede dar lugar a conflictos con la herencia repetida.

Casos de uso de herencia en desarrollo

Casos de uso de herencia en desarrollo
Casos de uso de herencia en desarrollo

En el desarrollo de aplicaciones, la herencia permite el modelado que debería acercarse lo más posible a la imaginación humana. La estructura de herencia conoce diferentes escenarios de aplicación.

Un caso común de herencia es la herencia de subtipos. La clase derivada es un subtipo de la superclase. Es un tipo de datos abstracto en el que un objeto del subtipo se puede utilizar básicamente en cualquier punto donde se espera un objeto del tipo básico. El conjunto de características del subtipo derivado es un subconjunto del conjunto de características del tipo básico.

Otro caso de herencia es el apoyo de habilidades básicas generales. En términos puramente formales, es un caso especial de herencia de subtipo. Se trata de establecer el soporte de las funcionalidades básicas de la biblioteca de clases o la arquitectura de la aplicación. Las funcionalidades como la comparabilidad (identificador «Comparable») o la serializabilidad (identificador «Serializable») son declaradas por una clase o interfaz abstracta. La implementación de los requisitos de la interfaz tiene lugar en la clase derivada.

Implementaciones estándar

Las estructuras de herencia también pueden referirse a implementaciones estándar. Se trata de la implementación de funcionalidades generales en clases centrales. Estas funcionalidades se pueden utilizar para varios tipos y se utilizan para la reutilización pragmática de componentes generales del programa.

Otro caso de uso es la herencia para expandir funciones. Aquí, se agregan nuevas funcionalidades en la subclase, que complementan las funciones básicas de la superclase. La extensión incluye atributos adicionales. Esta variante de herencia también implica adaptaciones mediante métodos de sobrescritura. De esta manera, se pueden agregar o complementar funcionalidades que no juegan un papel en la superclase.

Esta estructura de herencia también tiene en cuenta el caso de que la funcionalidad de una clase particular se implemente solo parcialmente en la clase derivada. En este caso, la superclase y la clase derivada son clases abstractas. En este caso, las implementaciones adicionales son objeto de más especializaciones.

Deja un comentario