É 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?
É 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?
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!