Oi, Wallace! Tudo bem?
Correta percepção! Quando criamos uma variável de referência para um objeto, estamos apenas criando uma nova maneira de acessar aquele objeto. No exemplo do código estudado, por exemplo, a variável p1 é uma referência para um objeto Produto. Quando declaramos Produto p2 = p1;, estamos criando uma nova referência (p2) para o mesmo objeto Produto ao qual p1 se refere.
Portanto, quando alteramos o preço do produto através da referência p2 com p2.setPreco(2.00);, estamos alterando o mesmo objeto ao qual p1 se refere. Por isso, quando imprimimos o preço do produto através da referência p1 com System.out.println(p1.getPreco());, o valor impresso é 2.00.
Somado a isso, em uma situação hipotética, podemos sim criar quantas referências quisermos para um mesmo objeto. No entanto, como mencionado, é importante considerar as boas práticas de programação. Criar muitas referências para o mesmo objeto pode tornar o código confuso e difícil de manter, além de aumentar a chance de erros.
Espero ter ajudado! Caso tenha ficado alguma dúvida, sinta-se à vontade em comunicar, estou à disposição!
Um forte abraço e bons estudos!
Caso este post tenha te ajudado, por favor, marcar como solucionado ✓