Declaração de variáveis

Gostaria de saber se a visibilidade de uma variável de instância faz parte da declaração da mesma.

A declaração de uma variável tem que ter um tipo e um nome, mas não li nada a respeito da visibilidade. Em Java, todas as variáveis têm uma visibilidade. Se não for declarada explicitamente, terá a “package”. Assim, a visibilidade faz parte de uma declaração de variável?

Sim. :slight_smile:

Não seria apenas o modificador de acesso? Não seria a declaração de uma variável apenas o seu nome e tipo?

Claro.

Tudo bem, vamos elaborar. :slight_smile:

Você está correto quando diz que uma variável possui apenas o seu tipo e seu identificador, como no exemplo a seguir:public void metodo(){ String texto = ""; }A variável texto foi declarada apenas com seu tipo (String) e identificador (texto).

E quanto ao modificador de visibilidade?

Aí caímos na declaração de membros de uma classe. Isso engloba tanto variáveis de instância, quanto métodos, e esses sim, possuem um nível de visibilidade sempre.

Então vale o que você disse para variáveis locais. Só é necessário de um tipo e um identificador, agora quando estiver falando de membros de classe, invariavelmente haverá um nível de visibilidade.

Não seria apenas o modificador de acesso? Não seria a declaração de uma variável apenas o seu nome e tipo?[/quote]

é um modificador opcional, assim como static

eu penso que “faz parte da declaração de variaveis de INSTÂNCIA” por que não é possivel alterar a visibilidade em outro ponto do código além da declaração.

posso estar enganado, essas perguntas parecem de certificação, é pegadinha ?

Tudo bem, vamos elaborar. :slight_smile:

Você está correto quando diz que uma variável possui apenas o seu tipo e seu identificador, como no exemplo a seguir:public void metodo(){ String texto = ""; }A variável texto foi declarada apenas com seu tipo (String) e identificador (texto).

E quanto ao modificador de visibilidade?

Aí caímos na declaração de membros de uma classe. Isso engloba tanto variáveis de instância, quanto métodos, e esses sim, possuem um nível de visibilidade sempre.

Então vale o que você disse para variáveis locais. Só é necessário de um tipo e um identificador, agora quando estiver falando de membros de classe, invariavelmente haverá um nível de visibilidade.[/quote]

Você tocou em um ponto que me interessou bastante!

“Então vale o que você disse para variáveis locais”. E quanto às variáveis de instância? Ainda não vale a definição, que a declaração de uma variável é apenas o tipo e identificador? Mesmo tendo a visibilidade “package” nele, isso é um modificador de acesso padrão, não parte da declaração da variável, correto?

O tipo e o identificador são da declaração da variável. O nível de acesso é do membro da classe, que no caso, coincidentemente, são a mesma coisa. :slight_smile: