lunes, 18 de agosto de 2008

POO Uso de referencias

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;
}
}

No hay comentarios: