lunes, 11 de julio de 2016

HERENCIA



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