Vous êtes sur la page 1sur 5

HERENCIA

La herencia es un mecanismo que permite la definicin de una clase a partir de la definicin de


otra ya existente. La herencia permite compartir automticamente mtodos y datos entre
clases, subclases y objetos.
La herencia est fuertemente ligada a la reutilizacin del cdigo en la OOP. Esto es, el cdigo
de cualquiera de las clases puede ser utilizado sin ms que crear una clase derivada de ella, o
bien una subclase.
Hay dos tipos de herencia: Herencia Simple y Herencia Mltiple. La primera indica que se
pueden definir nuevas clases solamente a partir de una clase inicial mientras que la segunda
indica que se pueden definir nuevas clases a partir de dos o ms clases iniciales. Java slo
permite herencia simple.
La herencia permite definir clases (subclases) a partir de otra clase ms genrica (superclase).
La herencia potencia la reutilizacin de cdigo, genera cdigo ms fiable y robusto y reduce el
coste de mantenimiento.

Object es la clase base (superclase) de todas las dems clases.
Si una clase no especifica extends, entonces se entiende que deriva de Object Todas las
clases derivan directa o indirectamente de Object.



Jerarqua de clases
Java permite mltiples niveles de herencia pero no la herencia multiple, es decir una clase
puede heredar directamente de una clase ascendiente. Por otro lado, una clase puede ser
ascendiente de tantas clases descendiente como se desee (un unico padre, multitud de hijos).



Utilizacin
o Para extender la funcionalidad de la clase padre
o Para especializar el comportamiento de la clase padre

Superclase y Subclases
El concepto de herencia conduce a una estructura jerrquica de clases o estructura de rbol, lo
cual significa que en la OOP todas las relaciones entre clases deben ajustarse a dicha
estructura.
En esta estructura jerrquica, cada clase tiene slo una clase padre. La clase padre de cualquier
clase es conocida como su superclase. La clase hija de una superclase es llamada una subclase.
La subclase rene todas las propiedades de la superclase, adems de las suyas propias.
o Una superclase puede tener cualquier nmero de subclases.
o Una subclase puede tener slo una superclase
Una subclase hereda todos los mtodos y atributos de la superclase excepto:
Atributos y mtodos privados
Constructores (no se heredan pero s se ejecutan)




A es la superclase de B, C y D.
D es la superclase de E.
B, C y D son subclases de A.
E es una subclase de D.
La clase hija pasa a tener lo que tiene la clase padre
o Atributos
o Mtodos
Un objeto de la clase hija es tambin un objeto de la clase padre

Sintaxis:
Se indica usando la palabra reservada extends
public class ClaseB extends ClaseA {
// Declaracion de atributos y metodos especificos de ClaseB
// y/o redeclaracion de componentes heredados
}

Visibilidad:
Los miembros privados de la superclase no son visibles desde la subclase
Los miembros pblicos de la superclase son visibles y siguen siendo pblicos en la
subclase
Se puede acceder a los miembros de la superclase usando la palabra reservada super
Si una clase se declara como final no se puede heredar de ella
En java, todas las clases heredan implcitamente de la clase Object.

Herencia y constructores
La subclase necesita normalmente que se ejecute el constructor de la superclase antes que su
propio constructor para inicializar las variables de instancia heredadas. La solucin consiste en
utilizar la palabra reservada super seguida entre parntesis de los parmetros correspondiente
en el cuerpo del constructor de la subclase. Es decir, incluir la siguiente sentencia como
primera lnea de cdigo:

super(argumentos opcionales);

De esta forma la implementacin de un constructor de la clase descendiente slo necesita
inicializar directamente las variables de instancia no heredadas. Si no aparece como primera
sentencia, el compilador inserta una llamada implcita super(); que inicializa las variables de
instancia a cero, false, carcter nulo o null dependiendo de su tipo. Esta llamada en cadena a
los constructores de las clases ascendientes llega hasta el origen de la jerarqua de clases, es
decir, hasta el constructor de la clase Object. En cualquier caso, la creacin de una nueva
instancia mediante un constructor debe tener tres fases:
1. Llamada al constructor de la clase ascendiente
2. Se asignan valores a los atributos
3. Se ejecuta el resto del constructor
Los constructores en la herencia
Cuando creamos un objeto de una subclase, el constructor de la clase padre tambin se
ejecuta:

Primero se ejecuta el constructor de la superclase y luego el de la subclase




Ventajas y desventajas:
Ventajas:
Se ahorra cdigo
Permite reutilizar cdigo extendiendo su funcionalidad
Desventajas
Se ahorra cdigo
Se introduce una fuerte dependencia en la clase hija respecto a la clase padre
Puede dificultar la reutilizacin
Un cambio en la clase padre puede tener efectos imprevistos en las clases hijas
Un objeto de una clase hija puede tener un comportamiento inconsistente con lo
esperado de un objeto de la clase padre
Se establece una jerarqua o clasificacin. Si cambia el criterio de clasificacin puede
acarrear muchas modificaciones


Bibliografa:
http://profesores.fi-b.unam.mx/carlos/java/java_basico3_4.html
https://www.fdi.ucm.es/profesor/gmendez/docs/prog0607/Tema4-Herencia.pdf
http://users.dsic.upv.es/~rllobet/pa/02_Transparencias/Tema4.pdf
http://ocw.upm.es/lenguajes-y-sistemas-informaticos/programacion-en-java-
i/Contenidos/LecturaObligatoria/16-herencia.pdf

Vous aimerez peut-être aussi