Herencia
Es una propiedad que permite que los objetos sean creados a
partir de otros ya existentes, obteniendo características (métodos y atributos)
similares a los ya existentes. Es la relación entre una clase general y otra
clase mas especifica. Es un mecanismo que nos permite crear clases derivadas a
partir de clase base, Nos permite compartir automáticamente métodos y datos
entre clases subclases y objetos. Por ejemplo: Si declaramos una clase párrafo
derivada de un clase texto todos los métodos y variables asociadas con la clase
texto son automáticamente heredados por la subclase párrafo
Ventajas
Ayuda a los programadores a ahorrar código y tiempo, ya que
la clase padre ha sido implementada y verificada con anterioridad, restando
solo referenciar desde la clase derivada a la clase base (que suele ser
extends, inherits, subclass u otras palabras clave similares, dependiendo del lenguaje).
Los objetos pueden ser construidos a partir de otros
similares. Para ello es necesario que exista una clase base (que incluso puede
formar parte de una jerarquía de clases más amplia).
La clase derivada hereda el comportamiento y los atributos de
la clase base, y es común que se le añada su propio comportamiento o que
modifique lo heredado.
Toda clase pueden servir como clase base para crear otras.
Desventajas
Si la jerarquía de clases es demasiado compleja, el
programador puede tener problemas para comprender el funcionamiento de un
programa. Además puede volverse más complejo detectar y resolver errores de
programación, por ejemplo al modificar una clase padre que afecta el
funcionamiento de las subclases.
Otro problema es que las subclases se deben definir en
código, por lo que los usuarios del programa no puede definir subclases nuevas.
Otros patrones de diseño permiten que los usuarios puedan definir variantes de
una entidad en tiempo de ejecución.
Herencia simple
Una clase sólo puede heredar de una clase base y de ninguna
otra.
Herencia múltiple
Una clase puede heredar las características de varias clases
base, es decir, puede tener varios padres. En este aspecto hay discrepancias
entre los diseñadores de lenguajes. Algunos de ellos han preferido no admitir
la herencia múltiple debido a que los potenciales conflictos entre métodos y
variables con igual nombre, y eventualmente con comportamientos diferentes crea
un desajuste cognitivo que va en contra de los principio de la programación
orientada a objetos. Por ello, la mayoría de los lenguajes orientados a objetos
admite herencia simple. En contraste, algunos pocos lenguajes admiten herencia
múltiple, entre ellos: C++, Python, Eiffel, mientras que Smalltalk, Java, Ada y
C# sólo permiten herencia simple.
Beneficios de la
herencia.
Reusabilidad del software
Cuando el comportamiento se hereda de otra clase, no es
necesario reescribir el código que lo define.
Para analizar los tipos de herencia en java hay que tener en
cuenta que existen 5 distintos tipos de clases:
Clase base, clases derivadas del mismo paquete, clases
derivadas en distinto paquete, clases del mismo paquete, clases en distinto
paquet
Características y
Funciones de los miembro
Solo se pueden heredar clases, no funciones ordinarias ni
variables.
Una sub-clase deriva de una clase base. La clase derivada
puede a su vez ser utilizada como clase base para derivar más clases,
conformándose así la jerarquía de clases.
Características de las
clases derivadas
Una clase derivada o
sub-clase:
Puede a su vez ser una clase base, dando lugar a la jerarquía
de clase.
Los miembros heredados por una clase derivada, pueden a su
vez ser heredados por más clases derivadas a ella.
Hereda todos los miembros de la clase base, pero solo podrá
acceder a aquellos que los especificadores de acceso de la clase base lo
permitan. Las clases derivadas solo pueden acceder a los miembros public,
protected y private-protected (en java) de la clase base, como si fueran
miembros propios.
No hay comentarios.:
Publicar un comentario