Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida no Ex. 1 da Aula 3 - Lendo ou escrevendo campos de objetos

achava que o compilador não saberia lidar com duas variáveis com o mesmo nome no construtor! isso ta certo? e o mesmo nome no parâmetro e na variável

1 resposta
solução!

Logicamente, não é possível declarar duas variáveis no mesmo escopo com o mesmo nome:

public void bla() { int a = 0; int a = 10;// erro }

apesar de parecer estranho, é permitido declarar variáveis locais ou parâmetros com o mesmo nome de variáveis de instância ou de classe. Essa técnica é chamada de ::shadowing::. Nesses casos, é possível resolver a ambiguidade: para variáveis de classe, podemos referenciar pela própria classe; para variáveis de instância, usamos a palavra chave this:

class Pessoa {

static int x = 0; int y = 0;

public static void setX(int x) { // Usando a referência da classe Pessoa.x = x; }

public void setY(int y) { // usando o this this.y = y; } }

No caso do exercício, quando chama o método : void c(int c) { c = c; }

passando o valor 10 ele apenas fala que c referencia ele mesmo; caso queira atribuir o valor do parâmetro para variável c da Classe teriamos que colocar o this.c .