Classes Internas

6 respostas
P

Uma classe interna tem acesso aos membros privados das classes exteriores a ela, ou seja se a classe A tem uma classe interna B, B tem acesso aos mebros privados de A?

6 Respostas

Grinvon

Não tem acesso!

VEJA:

public class teste {

  private int variavel=10;

  public int mostrarValor() {
    return variavel;
   }
}

class membro {

  public static void main(String[] args)
  {

     teste t = new teste();
     //t.variavel //nao consegue acesser pois é privado

     System.out.println(t.mostrarValor());

     }
}

Somente através de outra variável/método não privados. Mas diretamente não, mesmo a classe da variável privada estando no mesmo arquivo e pacote.

Grinvon

Outra coisa interessante. Se você tem um método protected, se tentar acessa-lo de outra classe vai poder, herdando suas propriedades, agora no caso criar uma outra classe e acessar da classe que herdou o método protegido, então esse método se torna privado.

sergiolopes

grinvon, acho q vc se confundiu… ele estava falando de classes internas nao de classes no mesmo arquivo ou mesmo pacote…

e a resposta é: sim, a classe interna tem acesso a atributos privados da classe q a contem

Exemplo:

public class A {
  private int atributo = 20;
  private class B {
     void print () {
       System.out.println("atributo=" + atributo);
     }
  }
}
Grinvon

Foi, fui preciptado.
Inner Classes

L

“sergiousp”:
grinvon, acho q vc se confundiu… ele estava falando de classes internas nao de classes no mesmo arquivo ou mesmo pacote…

e a resposta é: sim, a classe interna tem acesso a atributos privados da classe q a contem

Exemplo:

public class A { private int atributo = 20; private class B { void print () { System.out.println("atributo=" + atributo); } } }

E ae pessoal, posso estar pensando besteira, mas caso essa classe B venha ter uma nova classe dentro dela, a idéia e de que somente os filhos tem acesso aos atributos dos pais, isso? Independente de modificador?

Ironlynx

Nop!Os filhos podem acessar os atributos(de qquer tipo) dos avós tb!(e os bisavós e os…)

exemplinho:

public class A { private int atributo = 20; private int outroAtributo=100; private class B { void print () { System.out.println("atributo=" + atributo); } class C{ void ueba(){ System.out.println("saida:"+outroAtributo);} } } void metodo(){ new B().new C().ueba(); } public static void main(String[] args){ A a=new A(); a.metodo(); } }

Criado 30 de março de 2004
Ultima resposta 8 de abr. de 2004
Respostas 6
Participantes 5