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