Visibilidadde atributo classe interna [Resolvido]

4 respostas
luiz_renato

Pessoal uma dúvida na questão abaixo
Given:

package geometry;
 public class Hypotenuse {
 public InnerTriangle it = new InnerTriangle();
 class InnerTriangle {
 public int base;
 public int height;
 }
 }

Which statement is true about the class of an object that can reference the variable base?
A. It can be any class.
B. No class has access to base.
C. The class must belong to the geometry package.
D. The class must be a subclass of the class Hypotenuse.

A resposta é C . ok
Eu só não entendi porque se it é public ( e seu atributo base tbm é public) a classe interna InnerTriangle ser default impede base ficar visível .
Essa visibilidade não deveria ser deterimnada pelo modificador do próprio base e da instância it de InnerTriangle?

Luiz Renato

4 Respostas

G

Olá luiz_renato,

O motivo é que a classe InnerTriangle tem acesso default, ou seja, só pode ser vista por classes do mesmo pacote. Sendo assim, mesmo com o atributo público na classe Hypotenuse, nenhuma classe que esteja fora do pacote geometry pode enxergar a classe InnerTriangle.
Por favor pessoal, me corrijam se estiver errado ok?

Abraços e espero ter ajudado.

luiz_renato

Fala Gilson!

Rapaz eu testei e dá pra acessar o atributo it de uma instância de Hypotenuse a partir de outra classe fora do pacote, mas o base desse it não fica acessível.

Luiz Renato

G

Olá luiz_renato,

Vamos ver se melhoro…Através de uma referência de Hypotenuse você consegue acessar it pois é um atributo publico em Hypotenuse. Porém por estar fora do pacote geometry você não pode acessar o conteúdo da classe InnerTriangle, pois a mesma possui aceeso default. Portanto apesar de conseguir acesso ao it, você não pode executar nada neste objeto estando fora do pacote.

Experimente colocar a classe de teste no mesmo pacote e você verá que vai acessar os atributos público de InnerTriangle normalmente. A questão é meio confusa mesmo. Mas o sacada está no modificador da inner class.

Abraços

luiz_renato

Valeu Gilson!!

Criado 30 de setembro de 2010
Ultima resposta 30 de set. de 2010
Respostas 4
Participantes 2