RE:constructor de clase
Publicado por
Netroom (1 intervención) el 19/03/2010 20:06:27
Miclase obj1; Por sí mismo no significa nada más que estás declarando el tipo, es decir, que la referencia obj1 apuntará a un objeto de la clase Miclase, pero no estás haciendo que la referencia sea nula. En realidad, esa referencia TODAVIA NO EXISTE. Existe cuando realices la primera asignación.
Si quieres haces que obj1 apunte a null tendrás que hacer un:
Miclase obj1 = null;
Si tratas de observar obj1 antes de asignar ningun valor saltará un error en tiempo de compilación, ejemplo:
public class MiClase {}
public class Prueba {
private Prueba(); // No permitimos objetos de esta clase
public static void main (String args[]) {
MiClase obj1;
System.out.println(obj1);
}
}
Ese código que te muestro ahi: NO ES COMPILABLE. Pues intentamos acceder a un objeto que en realidad no existe. Tendrías que asignarle valor, aunque sea null.
public class MiClase {}
public class Prueba {
private Prueba(); // No permitimos objetos de esta clase
public static void main (String args[]) {
MiClase obj1 = null;
System.out.println(obj1);
}
}
Respuesta por pantalla: (null)
La operación MiClase obj1 = new MiClase(); suponiendo que existe el constructor MiClase() { } en la clase MiClase (Si creas un constructor con más parámetros, este ya no se crea por efecto). Realiza las siguientes operaciones:
1) Especifica, declara que obj1 será una referencia a un objeto de la clase MiClase
2) "new" (Equivalente al malloc de c, en su primera parte) Reserva en la memoria heap del programa el espacio necesario para todos los atributos que tienen los objetos de la clase MiClase (Los no static) y además (cosa que no hace "malloc" de C) les coloca el valor predeterminado 'null', '\0', 0x0 ó false.
3) MiClase(), sobre la dirección de memoria que apunta a nuestro objeto recien creado (La cual asociamos en el constructor como 'this' o simplemente no poniendo nada), ejecutamos las acciones programadas en nuestro constructor
Espero haberte ayudado! ;-)