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