Estava estudando e fazendo alguns testes com Classes Aninhadas, e fiz o código abaixo e compilei.
O problema (ou não) é que compilou e Executou, isso fazendo no pelo Prompt e executando o javac, tentei pelo Eclipse e dava erro.
Ao executar percebi 2 coisas que me deixaram com muitas duvidas.
Como pode a classe D extender a classe B, e mesmo extendendo, o super da classe D executar na Classe A?
Se alguém puder me ajudar, só para eu não ficar com duvidas referente a Classes Aninhadas.
qual erro que dava no eclipse? copia e cola ai… lembrar que a class interna é-um membro da class externa… respondendo sua pergunta todos ai estao no mesmo package e outra um construtor chama o outro ate chega Object… apenas isso!..
Doug_Floriano
Classe_C_Construtor
[color=red]Exception in thread “main” java.lang.Error: Unresolved compilation problem:
B cannot be resolved to a type[/color]
//Entendi a sua resposta CamiloLopes , ajudou para tirar a duvida.
//Valeu.
neohacker
nesta parte vc precisa alterar:
classDextendsB{
para
class D extends A.B{
porque a classe B é uma classe interna então vc precisar acessar pela classe externa…
tomara que eu não esteje errado…hehe
LPJava
vc nao pode acessar uma class interna diretamente nao… pois ela é-um membro da class encapsuladora… tenho q informar a class externa… espero tb estar certo… :?
Doug_Floriano
no caso de.
classDextendsA.B
como o NeoHacker disse.
Eu só não acessaria a classe B com a classe A instaciada?
seria melhor então deixar a classe B static?
LPJava
o problema do static que ela nao tem instancia e so pode ser acessada por outro membro static… lembre-se nao existe class static… qdo vc poe o modificador static em uma class aninhada, so ta dizendo que seu membro é static é o mesmo que abaixo:
classZ{
staticintz;
}
o membro z da class Z é static… com class aninhadas nao muda nada a respeito mesma ideia…
Doug_Floriano
Fiz outros teste, deixando
classDextendsA.B
Ao compilar, ja da erro, pois pede a intância da classe A, mas acho que isso não é possível.
até que deixando a classe B static rolou bem, e o super da classe D acessou a classe B direto.
mas acho que estou tentando só doideira, rsrss
é acho que preciso estudar muito mais esse “causos meio doidos” rsrs, valeu pelas dicas.
WellingtonRamos
Então,
A classe precisa ser static senão não rola.