La llamada a changePerson () pasa el objeto Persona como referencia, por lo que el name se ajusta a "GHI". Sin embargo, a continuación, una referencia a un nuevo objeto Persona que se crea con el valor del atributo name "JKL" se ha asignado a p. De ahí la posterior setName () define el atributo name con "MNO" sólo para nuevo objeto Persona y no el objeto original p que todavía se refiere al método principal (que define el atributo name con "GHI").
public class Example1 {
public static void main(String [] args) {
Person p = new Person("ABC");
p.setName("DEF");
changePerson(p);
System.out.println(p.getName());
}
public static void changePerson(Person p) {
p.setName("GHI");
p = new Person("JKL");
p.setName("MNO");
System.out.println(p.getName());
}
}
class Person {
String name;
Person(String name) {
this.name = name;
}
public void setName(String n) {
name = n;
}
public String getName() {
return name;
}
}
lunes, 18 de agosto de 2008
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario