e preciso acessar a classe A, mas não estou conseguindo com a instancia do D1
d1.A;//Não acessa.. até roda mas enxerga null
O único jeito mesmo é colocar A dentro de PRINCIPAL? Não tem como eu acessar A dentro de D1?
Porque não faz sentido A fica em PRINCIPAL já que D2, D3 e outras não vão utilizar A para nada…
Não sei se eu entendi direito o que você quis dizer, mas a Classe A é uma classe, portanto, para criar um objeto desta classe teria que fazer
D1.A obj = new D1().new A();
(Bem, se eu me lembro bem era assim, rs.)
Ainda fico com dúvidas se era isto que você queria saber…
Mantu
Olá, wellington7!
Olha, classes internas (inner classes) é um assunto meio intrincado…
Quando você tem uma classe D1, a qual tem uma inner class A, só conseguimos obter uma instância de A se, primeiro de tudo, A for acessível, segundo se tivermos antes uma instância da classe detentora, que neste caso é a D1. E a bizarrice não para por aí! o [i]new[/i] deve ser dado “a partir” da instância de D1!!! Confuso? Olhe só como fica essa brincadeira:
D1d1=newD1();D1.Aa=d1.newA();
Louco, né mesmo?
Divirta-se!
_
_Flavio_
Cara, não sei se entendi direito o que vc precisa, é mais ou menos isso?
abstractclassPRINCIPAL{publicvoidGenerico(){};}classD1extendsPRINCIPAL{publicvoidGenerico(){System.out.println("implementar");}classA{publicvoidtesteInterno(){System.out.println("Teste de classe interna");}}}publicclassClasseInterna{publicstaticvoidmain(String[]args){D1d1=newD1();D1.Aci=d1.newA();ci.testeInterno();}}
LPJava
para acessar a class interna partir de outra class vc precisa ter uma instanca da class que a engloba e depois criar uma instancia da classe interna como a galera falou acima… de forma direta nao tem como nao… a class interna é-um-membro da class externa, é como se fosse um metodo, uma variavel de instancia… vc nao pode acessar um metodo nao static, dentro de um metodo static se vc nao criar uma instancia da class aonde está o metodo certo? as classes interna funciona da mesma forma…
wellington7
Desculpe, esqueci de dizer que o construtor das classes já está instanciando as derivadas
OBS. Todos eram públicos, mesmo assim só consegui com o get
E tive que colocar o get na classe abstrata PRINCIPAL. Ou seja, não consigo acessar nada das derivadas que não esteja declarado na abstrata PRINCIPAL. Por isso consegui com o método.