Duvida Modificador de acesso entre pacotes

3 respostas
Nykolas_Lima
Question 135
Given:
1. package test;
2.
3. class Target {
4. public String name = ?hello?;
5. }
What can directly access and change the value of the variable name?
A. any class
B. only the Target class
C. any class in the test package
D. any class that extends Target

A resposta é a C.

Se o modificador é public ele nao pode ser acessado por qualquer classe independente do pacote?

Porque a resposta é C e não A?

3 Respostas

T

Ele não está se referindo ao “public” que você vê no atributo “name”.

Para determinar o acesso a alguma coisa, você primeiro tem de ver o acesso mais externo (que no caso é o acesso à classe Target) e depois o mais interno (que é o acesso ao atributo “name”). Ou seja, para você entrar em uma casa dentro de um condomínio fechado, cheio de guardas, você primeiro precisa entrar no condomínio (passar pelos guardas), e depois entrar na casa (que pode estar até com a porta destrancada).

Portanto, como Target não tem modificador de acesso (ou seja, ele é “package-private”, ou seja, somente classes do mesmo pacote podem acessar a classe Target), vale o acesso à classe (que é “any class in the “test” package”) e não o do membro.

OK?

davidtiagoconceicao

A variável é public, mas a classe é default, assim, fora deste pacote, não vai ser possível nem acessar a classe.

Nykolas_Lima

thingol:
Ele não está se referindo ao “public” que você vê no atributo “name”.

Para determinar o acesso a alguma coisa, você primeiro tem de ver o acesso mais externo (que no caso é o acesso à classe Target) e depois o mais interno (que é o acesso ao atributo “name”). Ou seja, para você entrar em uma casa dentro de um condomínio fechado, cheio de guardas, você primeiro precisa entrar no condomínio (passar pelos guardas), e depois entrar na casa (que pode estar até com a porta destrancada).

Portanto, como Target não tem modificador de acesso (ou seja, ele é “package-private”, ou seja, somente classes do mesmo pacote podem acessar a classe Target), vale o acesso à classe (que é “any class in the “test” package”) e não o do membro.

OK?

Entendi muito obrigado

valeu

Criado 12 de março de 2009
Ultima resposta 12 de mar. de 2009
Respostas 3
Participantes 3