Sie sind auf Seite 1von 3

3.

1 Definicin: Clase base y Clase derivada


La herencia es una propiedad esencial de la Programacin Orientada a Objetos
que consiste en la creacin de nuevas clases a partir de otras ya existentes. Este
trmino ha sido prestado de la Biologa donde afirmamos que un nio tiene la cara
de su padre, que ha heredado ciertas facetas fsicas o del comportamiento de sus
progenitores.
Una clase base es aquella que no dependen ninguno de sus atributos u objetos de
la clase de alguna otra clase, se podra decir que, en trminos de herencia, sera
la clase padre, la clase que se mantiene fija, en el aspecto de herencia.
Es tambin por as llamarlo la clase principal de un programa, sera la clase
primaria sin incluir la clase main en donde se corre todo el programa en s.
Adems de las clases bases, existen las llamadas clases derivadas, son clases
que dependen de las clases bases. Estas heredan atributos y mtodos de la clase
padre.
3.2 Clasificacin: Herencia simple y Herencia mltiple
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 POO. 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.
3.3 Reutilizacin de miembros heredados
La herencia ofrece una ventaja importante, permite la reutilizacin del cdigo. Una
vez que una clase ha sido depurada y probada, el cdigo fuente de dicha clase no
necesita modificarse. Su funcionalidad se puede cambiar derivando una nueva
clase que herede la funcionalidad de la clase base y le aada otros
comportamientos. Reutilizando el cdigo existente, el programador ahorra tiempo
y dinero, ya que solamente tiene que verificar la nueva conducta que proporciona
la clase derivada.
La manera ms fcil de reutilizar cdigo es copiarlo total o parcialmente desde el
programa antiguo al programa en desarrollo. Pero es trabajoso mantener mltiples
copias del mismo cdigo, por lo que en general se elimina la redundancia dejando
el cdigo reusable en un nico lugar, y llamndolo desde los diferentes programas.
Este proceso se conoce como abstraccin.

3.4 Referencia al objeto de la clase base


La funcionalidad de una clase existente se puede extender al crear una nueva
clase que se deriva de ella. La clase derivada hereda las propiedades de la clase
base y es posible agregar o reemplazar mtodos y propiedades segn sea
necesario.

3.5 Constructores y destructores en clases derivadas


Al instanciar objetos de clases derivadas se inicia una cadena de invocaciones a
constructores en las cuales el constructor de la clase derivada, antes de realizar
sus propias tareas, invoca (ya sea implcita o explcitamente) al constructor de su
clase base. Similarmente, si la clase base fue derivada de otra clase, el
constructor de la clase base debe invocar al constructor de la clase ubicada en el
siguiente nivel superior de la jerarqua, y as sucesivamente. El ltimo constructor
invocado en la cadena es el constructor de la clase Object, cuyo cuerpo se ejecuta
primero. El cuerpo del constructor de la clase derivada se ejecuta al final. El
constructor de cada clase base inicializa las variables de instancia que el objeto de
la clase derivada hereda.
Destructores en clases derivadas
Cuando remueve de la memoria un objeto de una clase derivada, el recolector de
basura invoca al destructor del objeto. Esto inicia una cadena de invocaciones a
destructores, en donde el destructor de la clase derivada y los destructores de las
clases bases directas e indirectas se ejecutan en orden inverso al que se
ejecutaron los constructores, esto es, primero se ejecuta el destructor de la clase
derivada y al final se ejecuta el destructor de la clase base ubicada en el nivel
superior de la jerarqua. La ejecucin de los destructores debe liberar todos los
recursos que el objeto adquiri, antes de que el recolector de basura reclame la
memoria de ese objeto. Cuando el recolector de basura invoca al destructor de un
objeto de una clase derivada, ese destructor realiza su tarea y despus invoca al
destructor de la clase base. El proceso se repite hasta que se invoca al destructor
de la clase Object.
3.6 Redefinicin de Mtodos en clases derivadas
El lenguaje Java permite redefinir miembros de la clase base en las clases
derivadas, pero el compilador emite una advertencia cuando detecta una
redefinicin. Una advertencia (warning) es un mensaje del compilador acerca de
un posible problema. Sin embargo, en este caso s se genera cdigo ejecutable (a
diferencia del mensaje de error). Redefinicin de campos. El siguiente ejemplo

muestra cmo reutilizar los identificadores de los campos de la clase base en una
clase derivada.

Das könnte Ihnen auch gefallen