1
resposta

É isso que é passar o objeto por referencia?

É isso que é passar o Objeto por referencia? Como seria pra só replicar o valor dele em outro objeto com os valores iguais? Teria algum jeito tipo o @Override pra fazer ele passar valor?

1 resposta

Olá, João! Entendo que você está com dúvidas sobre a passagem de objetos por referência em Java. Vamos lá!

No seu exemplo, quando você faz Produto p2 = p1;, você não está criando uma nova instância de Produto, mas sim fazendo p2 apontar para a mesma instância que p1 aponta. Isso é passar o objeto por referência. Assim, quando você altera o preço através de p2.setPreco(2.00);, você está alterando o mesmo objeto ao qual p1 está referenciando. Por isso, quando você imprime p1.getPreco(), o valor é 2.00, pois p1 e p2 estão referenciando o mesmo objeto.

Agora, se você quiser replicar o valor do objeto p1 em um novo objeto p2, sem que eles apontem para a mesma referência, você precisará criar uma nova instância de Produto e definir os valores de acordo com o objeto p1. Não existe algo como @Override para isso, mas você pode fazer algo assim:

Produto p2 = new Produto(p1.getNome(), p1.getPreco());

Nesse caso, p2 será um novo objeto com os mesmos valores de p1, mas eles não compartilharão a mesma referência. Assim, se você alterar o preço de p2, o preço de p1 não será afetado.

Espero ter ajudado e bons estudos!