Não. haehaehaeh, ae jeve, o “this.o” não existe, esse Objeto “o” não foi declarado como variavel de instancia, e sim dentro do método main()… não vai da certo não, e outra… se vc compilar com o “this.o”, o compilador retorna erro, pq vc não pode usar a referencia this em métodos estáticos!
… e o método foo() é estatico, pra poder ser chamado do método main()… atenção!
…mas tb não tem nada a ver com a variável ter o mesmo nome…, na verdade, todas as variaveis são passadas por valor (primitivos ou objetos), é isso ai… por valor mesmo! oq significa por valor da variável, passar por cópia da variável… não faz diferença se tu ta passando um primitivo ou um objeto, sempre estará passando uma cópia dos bits da variável, então… no q diz respeito a uma variavel primitiva, tu ta passando uma copia dos bits q representam o valor… por ex, se passar um int de valor 3 pro método, estará passando uma cópia dos bits q representam 3, assim, o método chamado obterá sua propria cópia do valor, pra fazer com ela oq quiser…
agora, se tu tiver passando uma variavel de referencia a um objeto, estará passando uma cópia dos bits q representam a referencia a um objeto, assim, o método chamado obterá a sua propria copia da variavel de referencia e fara com ela oq quiser… mas já q duas variaveis de referencia identicas referenciam exatamente o mesmo objeto, sé o metodo chamado alterar o objeto, o chamador perceberá q o objeto q sua variável original referenciou também tera sido alterado.
no exemplo, reatribuir a a variavel local do metodo “o” não reatribuirá a variavel “o” de main(), qnd a execução do método foo() for concluida, dois objetos Objeto terão sido criados, um referenciado pela variavel local do método main() “o”, e outro pela variavel local no método foo() “o”, já q o método foo() possui uma copia da variavel de referencia, tem uma maneira de acessar o objeto “o” original, mas não tem como acessar a variavel de referencia o do método main(), portanto… foo() pode alterar oq seu objeto “o” estiver referenciando, mas não o conteudo real (padrão de bits) deste.
pra não dar muita confusão pra ententer… renomeiem as variaveis “o” de cada método pra “x” e “y” por ex…
[]'s