Não compreendi oq seria menor escopo em relação ao ::shadowing:: .
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Não compreendi oq seria menor escopo em relação ao ::shadowing:: .
Oi Leonardo, tudo bem?
Em Java é possível declarar variáveis locais ou ter receber parâmetros nos métodos com o mesmo nome de variáveis de instância. 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;
}
}Quando não usamos o this ou o nome da classe para usar a variável, o compilador sempre utilizará a variável de menor escopo:
class X {
int a = 10;
public void metodo() {
int a = 20; // shadowing
System.out.println(a); // imprime 20, pois a variável de "menor escopo" é o escopo local, que é o int a = 20;
}
}