Constructores y destructores en java

Solo disponible en BuenasTareas
  • Páginas : 11 (2527 palabras )
  • Descarga(s) : 4
  • Publicado : 10 de junio de 2010
Leer documento completo
Vista previa del texto
Las clases pueden implementar un método especial llamado constructor. Un constructor es un método que inicia un objeto inmediatamente después de su creación. De esta forma nos evitamos el tener que iniciar las variables explícitamente para su iniciación.
El constructor tiene exactamente el mismo nombre de la clase que lo implementa; no puede haber ningún otro método que comparta su nombre conel de su clase. Una vez definido, se llamará automáticamente al constructor al crear un objeto de esa clase (al
utilizar el operador new).
El constructor no devuelve ningún tipo, ni siquiera void. Su misión es iniciar todo estado interno de un objeto (sus atributos), haciendo que el objeto sea utilizable inmediatamente; reservando memoria para sus atributos, iniciando sus valores…
Por ejemplo:Mi Punto( ) {
inicia( −1, −1 );
}
Este constructor denominado constructor por defecto, por no tener parámetros, establece el valor −1 a las variables de instancia x e y de los objetos que construya.
El compilador, por defecto ,llamará al constructor de la superclase Object() si no se especifican parámetros en el constructor.
Este otro constructor, sin embargo, recibe dos parámetros:Mi Punto( int paraX, int paraY ) {
inicia( paramX, paramY );
}
La lista de parámetros especificada después del nombre de una clase en una sentencia new se utiliza para pasar parámetros al constructor.
Se llama al método constructor justo después de crear la instancia y antes de que new devuelva el control al punto de la llamada.
Así, cuando ejecutamos el siguiente programa:
Hay unadistinción crítica entre la forma de manipular los tipos simples y las clases en Java: Las referencias a objetos realmente no contienen a los objetos a los que referencian. De esta forma se pueden crear múltiples referencias al mismo objeto, como por ejemplo:
Mi Punto p3 =p2;
Aunque tan sólo se creó un objeto Mi Punto, hay dos variables (p2 y p3) que lo referencian. Cualquier cambio realizadoen el objeto referenciado por p2 afectará al objeto referenciado por p3. La asignación de p2 a p3 no reserva memoria ni modifica el objeto.
De hecho, las asignaciones posteriores de p2 simplemente desengancharán p2 del objeto, sin afectarlo:
p2 = null; // p3 todavía apunta al objeto creado con new
Aunque se haya asignado null a p2, p3 todavía apunta al objeto creado por el operador new.Cuando ya no haya ninguna variable que haga referencia a un objeto, Java reclama automáticamente la memoria utilizada por ese objeto, a lo que se denomina recogida de basura.
Cuando se realiza una instancia de una clase (mediante new) se reserva en la memoria un espacio para un conjunto de datos como el que definen los atributos de la clase que se indica en la instanciación. A este conjunto devariables se le denomina variables de instancia.
La potencia de las variables de instancia es que se obtiene un conjunto distinto de ellas cada vez que se crea un objeto nuevo. Es importante el comprender que cada objeto tiene su propia copia de las variables de instancia de su clase, por lo que los cambios sobre las variables de instancia de un objeto no tienen efecto sobre las variables deinstancia de otro.
El siguiente programa crea dos objetos Mi Punto y establece los valores de x e y de cada uno de ellos de manera independiente para mostrar que están realmente separados.
Mi Punto p4 = new Mi Punto( 10, 20 );
Mi Punto p5 = new Mi Punto( 42, 99 );
System.out.println(“p4.- x = “ + p4.x + “ y = “ + p4.y);
System.out.println(“p5.- x = “ + p5.x + “ y = “ + p5.y);
Este es elaspecto de salida cuando lo ejecutamos.
p4.- x = 10 y = 20
p5.- x = 42 y = 99
D. Acceso al objeto ejemplo x se convertirá en p6.x.
Si otros objetos llaman a inicia(), incluso si lo hacen de una manera concurrente, no se producen efectos laterales, ya que las variables de instancia sobre las que trabajan son distintas.
‘La destrucción del objeto’ a.) La destrucción de los objetos
Cuando...
tracking img