Constructores y destructores
Los
constructores y destructores son dos tipos de métodos especiales que se
ejecutan, respectivamente, al crear un nuevo objeto y cuando el recolector de
basura detecta que ya no lo estamos utilizando y es posible eliminarlo de la
memoria. Hasta ahora no hemos hecho uso nunca ni de los constructores ni de los
destructores puesto que los ejemplos que hemos venido utilizando eran bastante
simples, pero a partir de ahora vamos a empezar a utilizarlos bastante a
menudo. Sobre todo, en el caso de los constructores, ya que los destructores no
se suelen usar más que en contadas ocasiones.
Para
crear un objeto se necesita reservar suficiente espacio en memoria e
inicializar los valores de los campos que representan el estado del objeto.
Este
trabajo es realizado por un tipo especial de método denominado constructor.
Constructor
Un
método constructor de una clase es un método especial que:
• tiene el mismo nombre que la clase
• no tiene tipo de retorno.
• inicializa el estado de un objeto.
La
sintaxis para la declaración de un método constructor es:
[atributos]
[modificadores] <identificador> ( [parámetros] ) [inicializador]
{
//
Cuerpo del constructor.
}
Donde:
atributos
(opcional) es información declarativa adicional.
modificadores
(opcional) se restringen a extern y a los modificadores de acceso.
identificador
es el nombre del método constructor (igual al nombre de la clase).
parámetros
(opcional) es la lista de parámetros pasados al constructor.
inicializador
(opcional). Con el inicializador, el constructor invoca previamente a otro
constructor.
El
inicializador puede ser uno de los siguientes:
· base([listaDeParámetros])
· this([listaDeParámetros])
Cuerpo
del constructor es el bloque de programa que contiene las instrucciones para
inicializar la instancia de clase (objeto).
Destructor
En
contraposición al constructor, el destructor elimina el vínculo y libera el
espacio de memoria de un objeto, para que pueda ser ocupado nuevamente.
La
sintaxis para declarar un destructor es:
[atributos]
~ <identificador> ( )
{
//
Cuerpo del destructor.
}
Notas:
• Una clase solamente puede tener un
destructor.
• Los destructores no pueden heredarse o
sobrecargarse.
• Los destructores no pueden invocarse,
sino que son invocados automáticamente.
• Un destructor no acepta modificadores
ni parámetros. Por ejemplo, la siguiente es una declaración de un destructor
para la clase Figura:
~
Figura()
{
//
Instrucciones para limpiar.
}
El
destructor llama implícitamente al método Object.Finalize( ) en la clase base
object. Por lo tanto, el código destructor precedente es traducido
automáticamente a:
protected override void Finalize( )
{
try
{
//
Instrucciones para limpiar.
}
finally
{
base.Finalize(
) ;
}
}
No hay comentarios:
Publicar un comentario