Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Dúvida na resposta do exemplo

Olá, pessoal... gostaria de uma pequena ajuda aqui. A resposta do exemplo anterior diz o seguinte:

"A variável produto2 faz referência ao mesmo objeto que produto1, portanto, ao chamar o método setPreco(2.00) em produto2, o preço de ambos os objetos é atualizado para 2.00."

Quando é dito: "...o preço de ambos os objetos...", dá a entender que existem dois objetos. Mas na verdade há apenas um, certo?

2 respostas
solução!

Olá, Marcus.

Tudo bem?

Você está correto. No exemplo que você mencionou, realmente há apenas um objeto, e tanto produto1 quanto produto2 são referências ao mesmo objeto na memória.

Vamos revisar o código para esclarecer:

public class Produto {
    private String nome;
    private double preco;

    public Produto(String nome, double preco) {
        this.nome = nome;
        this.preco = preco;
    }

    public String getNome() {
        return nome;
    }

    public double getPreco() {
        return preco;
    }

    public void setPreco(double preco) {
        this.preco = preco;
    }
}
public class Teste {
    public static void main(String[] args) {
        Produto p1 = new Produto("Caneta", 1.50);
        Produto p2 = p1; // p2 agora referencia o mesmo objeto que p1
        p2.setPreco(2.00); // altera o preço do objeto referenciado por p1 e p2
        System.out.println(p1.getPreco()); // imprime 2.00
    }
}

No código acima, Produto p1 = new Produto("Caneta", 1.50); cria um novo objeto Produto e p1 referencia esse objeto. Quando você faz Produto p2 = p1;, p2 passa a referenciar o mesmo objeto que p1. Portanto, qualquer alteração feita através de p2 também será refletida em p1, pois ambos referenciam o mesmo objeto.

Quando o método setPreco(2.00) é chamado em p2, ele altera o preço do objeto referenciado por p1 e p2. Assim, ao chamar p1.getPreco(), o valor retornado será 2.00.

Espero ter ajudado e bons estudos!

Obrigado pelo retorno, Renan!