Mmm... he realizado una prueba y me ha dado resultados diferentes a los que se indican :/. Al parecer funciona según donde estén apuntando la última vez las instancias.
Dejo el ejemplo que he realizado por curiosidad y ha resultado ser diferente del esperado. Ya he entendido como funciona y no se si es que realmente no he entendido tu explicación o te has equivocado.
package PrimeraClase;
public class Constructores {
boolean valiente = false;
int edad;
double altura;
public Constructores
(boolean valiente,
int edad,
String colorPelo,
double altura
){ this.valiente = valiente;
this.edad = edad;
this.colorPelo = colorPelo;
this.altura = altura;
}
public Constructores(){
this.valiente = false;
this.edad = 0;
this.colorPelo = null;
this.altura = 0;
}
public static void main
(String[] arg
) {
/*
new Persona().getNombre(); y
Persona p = new Persona();
p.getNombre();
Es que en el primero creas una referencia temporal para el objeto que esta creando new e invocas el metodo
y la variable es destruida temporal es destruida despues de esa linea mientras que en la segunda se genera
el objeto en el heap y se guarda esa direccion para que pueda ser usada posteriormente.
la variable p existira hasta que se salga del metodo donde se declaro o del bloque ({..}) donde se creo.
*/
// System.out.println(new Constructores().colorPelo = "marron");
Constructores pj = new Constructores(true, 30, "moreno", 1.9f);
Constructores pj1 = new Constructores(false,15,"rubio",1.4f);
Constructores pj2;
System.
out.
println("Datos de PJ"); System.
out.
println("El pj es valiente: "+pj.
valiente); System.
out.
println("El pj tiene: "+pj.
edad+" años"); System.
out.
println("El pj es: "+pj.
colorPelo); System.
out.
println("El pj mide: "+pj.
altura+" cm"); System.
out.
println("******************************************************************"); System.
out.
println("Datos de PJ1"); System.
out.
println("El pj1 es valiente: "+ pj1.
valiente); System.
out.
println("El pj1 tiene: "+pj1.
edad+" años"); System.
out.
println("El pj1 es: "+pj1.
colorPelo); System.
out.
println("El pj1 mide: "+pj1.
altura+" cm"); System.
out.
println("******************************************************************"); System.
out.
println("******************************************************************"); System.
out.
println("Ahora en pj1 apunta a pj por lo que debería salir lo mismo que pj"); pj1 = pj;
System.
out.
println("El pj1 es valiente: "+ pj1.
valiente); System.
out.
println("El pj1 tiene: "+pj1.
edad+" años"); System.
out.
println("El pj1 es: "+pj1.
colorPelo); System.
out.
println("El pj1 mide: "+pj1.
altura+" cm"); System.
out.
println("******************************************************************"); System.
out.
println("******************************************************************"); pj2 = pj1;
System.
out.
println("Ahora pj2 apunta a pj1 que a su vez pj1 ya estaba apuntando a pj por lo que debería salir lo mismo que pj"); System.
out.
println("El pj2 es valiente: "+ pj2.
valiente); System.
out.
println("El pj2 tiene: "+pj2.
edad+" años"); System.
out.
println("El pj2 es: "+pj2.
colorPelo); System.
out.
println("El pj2 mide: "+pj2.
altura+" cm"); }
}
RESULTADOS
Datos de PJ
El pj es valiente: true
El pj tiene: 30 años
El pj es: moreno
El pj mide: 1.899999976158142 cm
******************************************************************
Datos de PJ1
El pj1 es valiente: false
El pj1 tiene: 15 años
El pj1 es: rubio
El pj1 mide: 1.399999976158142 cm
******************************************************************
******************************************************************
Ahora en pj1 apunta a pj por lo que debería salir lo mismo que pj
El pj1 es valiente: true
El pj1 tiene: 30 años
El pj1 es: moreno
El pj1 mide: 1.899999976158142 cm
******************************************************************
******************************************************************
Ahora pj2 apunta a pj1 que a su vez pj1 ya estaba apuntando a pj por lo que debería salir lo mismo que pj
El pj2 es valiente: true
El pj2 tiene: 30 años
El pj2 es: moreno
El pj2 mide: 1.899999976158142 cm