Está en la página 1de 7

Universidad Tecnolgica de El Salvador

HERENCIA

Definicin.

Es la capacidad de crear clases que adquieran de manera automtica los miembros (atributos y
mtodos) de otras clases que ya existen, pudiendo al mismo tiempo agregar sus propios atributos
y mtodos.

Ventajas:

- La reutilizacin de cdigo. En ocasiones se necesita crear clases que, adems de sus


propios miembros incluyan los ya definidos en otra. Con la herencia evitamos reescribir
todos los miembros de la nueva clase.

- Mantenimiento de aplicaciones existentes. A travs de la herencia, al tener clases con


determinada funcionalidad, y, si en algn momento dado se tiene la necesidad de ampliar
el funcionamiento de esta, no ser necesario modificar la clase existente (la cual se puede
seguir utilizando para el tipo de programa que fue diseada) sino que puede crearse una
clase que herede de la primera, adquiriendo toda su funcionalidad y aadiendo la suya
propia.

Reglas:

- La clase que va a ser heredada se le conoce como superclase o clase base, mientras que a
la que hereda se le llama subclase o clase derivada.
- Grficamente, la herencia entre dos clases se representa con una flecha saliendo de la
subclase hacia la superclase.
- El lenguaje Java no permite la herencia mltiple, es decir, una subclase no puede heredar
de ms de una superclase.
- Java permite la herencia multinivel, es decir, una subclase B, que hereda de A, puede
convertirse en superclase de una clase C.
- Una clase puede heredar a muchas subclases.
- Los constructores no se heredan.
- Mediante la utilizacin de la palabra super puede invocarse el constructor de la superclase
desde la subclase.
- Los miembros privados no se heredan.
- Cuando se quiere impedir la herencia de una clase o un miembro, se debe anteponer la
palabra reservada final.
- La herencia es creada en el momento que se hace uso de la palabra reservada extends,
para indicar que se va a crear una clase a partir de otra.

Programacin Orientada a Objetos Ing. Jos Oswaldo Barrera Montes


Universidad Tecnolgica de El Salvador

Representacin grfica de la herencia que podemos realizar en Java:

Permitido: Permitido: Permitido:

No permitido:

Ejemplos:

1) En una clase Persona tenemos dos variables llamadas nombre y apellido, adems un
mtodo que imprime en pantalla la concatenacin de los dos atributos (variables).
A partir de Persona cree dos subclases, llmelas Profesor y Estudiante, no declare
ningn miembro en ellas.
Cree la clase de entrada al sistema (la que tiene el mtodo main) desde ella cree una
instancia por subclase e invoque los tres miembros que se han heredado.

Solucin:

Programacin Orientada a Objetos Ing. Jos Oswaldo Barrera Montes


Universidad Tecnolgica de El Salvador

SUPERCLASE.

En ella tenemos tres


miembros, 2 variables

Sub clase Estudiante,


creada a partir de la
clase Persona, la cual
pasa a convertirse en
superclase.

Sub clase Profesor,


creada a partir de la
Se han creado
clase Persona, la cual
un objeto por
pasa a llamarse
cada subclase,
superclase.
con estos
podemos
acceder a los Vea como cada miembro heredado
miembros de es invocado, aunque no se
que se declararon en la clase forman parte
heredaron. de ella. Esa es la gran ventaja de la
herencia, nos evita reescribir
cdigo. En este caso se invocan los
miembros de la clase Estudiante.

En las dos subclases creadas no se han declarado miembros, sin embargo es posible
hacerlo.

2) Realizar el ejercicio anterior, quite a la clase Persona el mtodo Nombre, solo deje las
variables; aada el mtodo Estudiar a la clase Estudiante, y en la clase Profesor agregue
el mtodo Explicar.

Solucin:

Programacin Orientada a Objetos Ing. Jos Oswaldo Barrera Montes


Universidad Tecnolgica de El Salvador

Lneas 1-4: se ha declarado una clase llamada Persona, de la cual se crearn posteriormente dos
subclase.

Lnea 6: se crea la clase Estudiante a partir de la clase Persona.

Lneas 8-11: se define el mtodo Estudiar, el cual simplemente imprime un mensaje en pantalla.
Vea como utilizamos las variables nombre y apellido sin que se hayan declarado en esta clase, pero
como ya vimos, al crear una clase a partir de otra, los miembros de la superclase pasan a ser parte
de la subclase, y esta ltima tambin puede crear sus propios miembros, como es el caso del
mtodo que estamos explicando en estas lneas.

Programacin Orientada a Objetos Ing. Jos Oswaldo Barrera Montes


Universidad Tecnolgica de El Salvador

Lnea 14: se crea la clase Profesor a partir de la clase Persona.

Lneas 16-19: se define el mtodo Explicar, el cual simplemente imprime un mensaje en pantalla.
Vea como utilizamos las variables nombre y apellido sin que se hayan declarado en esta clase, pero
como ya vimos, al crear una clase a partir de otra, los miembros de la superclase pasan a ser parte
de la subclase, y esta ltima tambin puede crear sus propios miembros, como es el caso del
mtodo que estamos explicando en estas lneas.

Lneas 26 y 27: se han creado un objeto de las clases Estudiante y Profesor.

Lneas 29 y 31: se realiza una invocacin a cada uno de los miembros de la clase Estudiante. A las
variables nombre y apellido se les est enviado un valor, las cuales son invocadas con el objeto
respectivo, sin este no sera posible accesar a ellas, lo ltimo y no menos importante, es que
dichas variables no fueron declaradas en esta clase, se heredaron de Persona.

Lneas 29 y 31: la explicacin es igual que las lneas anteriores, pero ahora con el objeto de la clase
Profesor.

3) Realizar el ejercicio dos con las siguientes particularidades, al mtodo Estudiar de la


clase Estudiante agregue un parmetro tipo Profesor y al mtodo Explicar de la clase
Profesor agregue parmetro tipo Estudiante. En el mensaje que imprime cada mtodo,
utilice el parmetro como un objeto para invocar las variables de la clase a la cual
corresponde el tipo del parmetro.

Explicacin previa:

Qu significa eso que se ha sombreado?

Primero iniciamos haciendo un breve recordatorio, usted sabe y tiene muy claro cmo se declara
una variable, recuerde, no importa el tipo de dato que tendr la variable, el proceso para
declararla ser siempre la misma; partiendo de eso, podemos entonces declarar miembros con
tipos de datos no primitivos de Java (tipos primitivos son todos aquellos que el lenguaje trae
predefinidos, los que hemos estado utilizando), es decir aquellos creados por nosotros mismos.
Hasta hoy hemos visto como se crea una clase y hemos aprendido a hacerlo, lo que realmente
hacemos al declarar una clase es crear un tipo de dato, entonces pueden crearse miembros
(mtodos o variables) de ese tipo. Cada vez que usted defina un miembro con un tipo
personalizado, nunca debe olvidar que debe existir la clase, para que el tipo de dato exista.

Regresando a la pregunta inicial, los parmetros que cree en cada mtodo mencionado no son
String, int o algn otro tipo ya conocido, son de uno creado por nosotros, Profesor y Estudiante.
Cuando se define una variable de un tipo creado por nosotros, esa variable lo que puede guardar
es objetos de la clase a la cual el tipo pertenece; si se trata de un mtodo, este debe retornar
objetos de la clase que corresponda.

Programacin Orientada a Objetos Ing. Jos Oswaldo Barrera Montes


Universidad Tecnolgica de El Salvador

Solucin:

Lnea 8: ya usted not en la parte sombreada, se ha declarado un parmetro en el


mtodo, el cual se llama pr y su tipo es Profesor; esto ltimo significa que corresponde a
un valor definido por nosotros mismos, la clase Profesor debe existir para que puedan
crearse miembros de ese tipo, de lo contrario no es posible.

Lnea 10: preste atencin a lo sombreado, vea que estamos invocando las variables
nombre y apellido de la clase Profesor, las cuales como ya pudo notar han sido heredadas
a partir de Persona. Utilizamos el parmetro pr como si de un objeto se tratara, la razn es
sencilla, al tratarse de un parmetro de ese tipo, este slo podr almacenar objetos de la
clase de la cual l procede.

Programacin Orientada a Objetos Ing. Jos Oswaldo Barrera Montes


Universidad Tecnolgica de El Salvador

Lnea 16: en la parte sombreada la explicacin es igual que la lnea 8, pero en esta ocasin
se trata de un parmetro del tipo Estudiante.

Lnea 18: la explicacin dada para la lnea 10 aplica para esta, aunque aparentemente se
invoque a las mismas variables no lo son, excepto por su identificador que es igual,
lgicamente porque proceden de la misma superclase. En lo que se encuentra sombreado
se est invocando las variables de la clase Estudiante, de esa manera accedemos al
contenido de ellas.

Lneas 35: ponga mucho nfasis en ella, primero con el objeto de la clase Estudiante se
invoca al mtodo Estudiar que se encuentra en ella, lo nuevo aqu es el argumento que
enviamos, es este caso lo que se enva es un objeto de la clase Profesor, ese luego pasa a
almacenarse en el parmetro del mtodo, para que luego este ltimo pase a utilizar como
instancia.

Lnea 36: la idea de la explicacin de la lnea anterior aplica en esta, pero ahora se trabaja
con un mtodo de la clase Profesor y se enva como argumento una instancia de la clase
Estudiante, ya que eso es lo que el mtodo espera.

Programacin Orientada a Objetos Ing. Jos Oswaldo Barrera Montes

También podría gustarte