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?
Classes Internas
6 Respostas
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.
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.
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);
}
}
}
Foi, fui preciptado.
Inner Classes
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?
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();
}
}