Tenho o trecho de código abaixo e o resultado que ele dá.
public static void main(String[] args) {
Casa casaNula = new Casa();
Casa casaColorida = new Casa("verde","rua 3");
casaColorida.changeCasa(casaColorida);
System.out.println(casaNula.toString());
System.out.println(casaColorida.toString());
}
public class Casa {
private String cor;
private String endereco;
public Casa () {}
public Casa (String cor, String endereco) {
this.cor = cor;
this.endereco = endereco;
}
public void changeCasa (Casa a) {
a.setCor("amarela");
a = new Casa();
}
...
//Getters e Setters
...
}
Retorno
Cor : null Endereco : null
Cor : amarela Endereco : rua 3
A dúvida que tenho:
Por que quando altero a cor de 'a' no método changeCasa o objeto casaColorida consegue refletir a mudança, mas quando eu atribuo uma nova instância de Casa em 'a' essa alteração não é refletida?
public void changeCasa (Casa a) {
a.setCor("amarela");
a = new Casa();
}
Gostaria também de saber se isso tem um nome e onde posso encontrar uma aula ou artigo que desenvolva sobre o assunto.