lunes, 25 de noviembre de 2013

Constructores en clases derivadas

Ya se comentó que un constructor de una clase puede llamar por medio de la palabra this a otro constructor previamente definido en la misma clase. En este contexto, la palabra this sólo puede aparecer en la primera sentencia de un constructor. 
De forma análoga el constructor de una clase derivada puede llamar al constructor de su super-clase por medio de la palabra super(). seguida entre paréntesis de los argumentos apropiados para uno de los constructores de la super-clase. De esta forma, un constructor sólo tiene que inicializar directamente las variables no heredadas. 
La llamada al constructor de la super-clase debe ser la primera sentencia del constructor4, excepto si se llama a otro constructor de la misma clase con this(). Si el programador 110 la incluye. Java incluye automáticamente una llamada al constructor por defecto de la super-clase. super(). Esta llamada en cadena a los constructores de las super-clases llega hasta el origen de la jerarquía de clases, esto es al constructor de Object. 
Como ya se ha dicho, si el programador 110 prepara un constructor por defecto, el compilador crea uno. inicializando las variables de los tipos primitivos a sus valores por defecto, y los Stríngs y demás referencias a objetos a nuil. Antes, incluirá una llamada al constructor de la super-clase.
En el proceso de finalización o de liberación de reclusos (diferentes de la memoria reservada con nen\ de la que se encarga el garbage collector), es importante llamar a los finalizadores de las distintas clases, normalmente en orden inverso al de llamada de los constructores. Esto hace que el finalizador de la sub-clase deba realizar todas sus tareas primero y luego llamar al finalizador de la super-clase en la forma super.finalize(). Los métodos finalize() deben ser al menos protected. ya que el método finalize() de Object lo es, y 110 está permitido reducir los permisos de acceso en la herencia.

No hay comentarios:

Publicar un comentario