You are on page 1of 3

Unidad III.

Herencia

Programacin Orientada a Objetos

III. Herencia
Una de las propiedades ms importantes de la programacin orientada a objetos es la herencia,
mecanismo que sirve para definir objetos basados en otros ya existentes.
Java soporta la herencia mediante la extensin de clases que permite definir una nueva clase basada en
otra, sin modificar esta ltima.

3.1 Clase Base y Clase Derivada


Una clase base es aquella que va a heredar sus propiedades a otra, y una clase derivada es la que recibe
las propiedades de la clase base.
En java, se denomina Superclase a la clase base y Subclase a la clase derivada. La superclase tambin se
conoce como clase padre, y la subclase como clase hija, o extendida.
La definicin de una subclase como clase extendida es de la siguiente forma:
Modificador_de_acceso class nombre_clasederivada extends nombre_clasebase {
Cuerpo de la clase
}
Ejemplo:
public class estudiante extends persona{
..}

Qu hereda y qu no hereda una clase

Una subclase hereda todos los miembros de su sper clase excepto los constructores.

Una subclase no tiene acceso a los miembros privados de su superclase.

Una subclase puede heredar a otras clases. A esto se llama propagacin de herencia.

Una subclase puede agregar sus propios atributos y mtodos. Si el nombre de alguno de estos
miembros coincide con el de un miembro heredado, este ltimo queda oculto para la subclase.

3.2 Clasificacin: Herencia Simple y Herencia derivada


La herencia simple es aquella en la que una clase se extiende a partir de otra que es nica. Es decir, un
objeto hereda propiedades a partir de un solo objeto. Java soporta exclusivamente la herencia simple.
Un objeto puede heredar propiedades de varias clases previamente definidas. Solo algunos lenguajes
soportan estas caractersticas, como el lenguaje C++.

1
Instituto Tecnolgico de Toluca

Lic. Alma Patricia Vsquez Glez.

Unidad III. Herencia

Programacin Orientada a Objetos

3.3 Reutilizacin de miembros heredados


La derivacin de clases consigue la reutilizacin efectiva del cdigo de la clase base para sus
necesidades. Si se tiene una clase base totalmente depurada, la herencia ayuda a reutilizar ese cdigo
en una nueva clase. No es necesario comprender el cdigo fuente de la clase original, sino slo lo que
hace.

3.4 Referencia al objeto de la clase base (Ver 3.6)


3.5 Constructores y destructores en clases derivadas
En la herencia primero se ejecutan los constructores de las superclases de arriba abajo en la jerarqua y
finalmente el de la subclase.
Esto es porque una subclase contiene los atributos de la superclase y todos tienen que ser inicializado
previamente. Razn por la que el constructor de la subclase tiene que llamar implcita o explcitamente
al de la superclase.
Cuando se han definido constructores con parmetro tanto en las subclases como en las superclases,
seguramente se deber construir el objeto de la subclase con valores determinados, en este caso la
definicin del constructor debe permite invocar explcitamente al constructor de la sper clase y esto se
hace utilizando la palabra reservada super.
Ejemplo:
class figura
{
protected int num;
public figura(int num) {
this.num=num;
}

}
public class cuadrado extends figura
{
protected float medidal;
protected String color;
public cuadrado(float ml, int nl) //Un parmetro ser para la subclase y otro para la superclase
{
super(nl);
//Llamada a constructor de la superclase
medida=ml;
}

Destructores de clases heredadas


Si se define en una subclase un mtodo finalize para liberar los recursos asignados por dicha clase, se
debe redefinir el mtodo finalize en la superclase, y liberar tambin los recursos asignados por ella.
2
Instituto Tecnolgico de Toluca

Lic. Alma Patricia Vsquez Glez.

Unidad III. Herencia

Programacin Orientada a Objetos

El mejor lugar para invocar el mtodo finalize de la sper clase es en la ltima lnea del mtodo finalize
de la subclase, porque como la parte del objeto de la subclase se construye una vez que se ha
construido la parte del objeto de la superclase, los vnculos existentes exigirn deshacer lo construido en
forma inversa.
Ejemplo:
class clase_A
{

protected void finalize () throws Throwable


{
System.out.println(Recursos clase_A Liberados);
}
}
Definicin de la Subclase:
class clase_B extends clase_A
{

protected void finalize () throws Throwable


{
System.out.println(Recursos clase_B Liberados);
super.finalize();
}
}

3.6 Redefinicin de los miembros de las clases derivadas


Es posible modificar la parte que se hereda en una clase, lo que se denomina redefinicin de los
elementos de la clase base.
1. La clase derivada puede definir un atributo con el mismo nombre que uno de la clase base y la
definicin en la subclase oculta el atributo en la superclase.
2. La clase derivada puede redefinir un mtodo heredado, significa, volverlo a escribir en la
subclase con el mismo nombre, la misma lista de parmetros y el mismo tipo del valor de
retorno, pero su cuerpo ser adaptado a las necesidades de la subclase. Cuando una subclase
redefine un mtodo, el mtodo de las superclase se oculta pero si el nmero de parmetros o
los tipos de datos son diferentes el comportamiento es el de la sobrecarga.
No se puede redefinir un mtodo en una subclase, haciendo que su control de acceso sea ms
restrictivo que el original. De acuerdo a esto un mtodo que en la superclase, sea protegido en la
subclase, puede ser protegido o pblico, si es pblico tambin tendr que ser pblico.
Para poder acceder a los atributos de la sper clase redefinidos, se deber utilizar la palabra
reservada super.
Los elementos estticos no se pueden redefinir.
3
Instituto Tecnolgico de Toluca

Lic. Alma Patricia Vsquez Glez.

You might also like