Classes ou variáveis ​​em Java sombreadas

sombreamento refere-se à prática em programação Java de utilizar duas variáveis ​​com o mesmo nome dentro âmbitos que se sobrepõem. Quando você faz isso, a variável com o escopo de nível superior está escondido porque a variável com escopo de nível inferior substitui-lo. A variável de nível superior é, em seguida, # 147-sombreada.# 148;

Você canaccess uma classe sombreado ou variável de instância, qualificando-a completamente - ou seja, fornecendo o nome da classe que contém.

Por exemplo, considere este programa:

classe pública ShadowApp {static void main (String [] args) static int x-públicas {x = 5-System.out.println ( "x =" + x) -int xx = 10 System.out.println ( "x = "+ x) -System.out.println (" ShadowApp.x = "+ ShadowApp.x) -}}

Aqui está a saída:

X = 5x 10x = = = 5 10ShadowApp.x

Aqui, o primeiro System.out.println declaração imprime o valor da variável de classe x. Em seguida, a variável de classe x é sombreado pela variável local x, cujo valor é impresso pela segunda System.out.println declaração. Finalmente, o terceiro System.out.println declaração imprime a variável de classe sombra, fornecendo seu nome totalmente qualificado (ShadowApp.x).

O escopo de uma variável local que duplica uma classe variável não começa necessariamente no mesmo ponto que o escopo da variável local começa. A sombra começa quando a variável local é declarada, mas o escopo da variável local não começa até que a variável é inicializada. Se você tentar acessar a variável entre a declaração ea inicialização, o compilador Java exibe uma mensagem de erro.

Porque sombreamento é uma fonte comum de erros, você vai querer evitar usá-lo tanto quanto possível.

menu