[Resolvido] Dúvida questão (Inner class)

6 respostas
Jairo_Junior1
class A {
    void m(){
        System.out.println("outer");
    }
}

public class TestInners {

    public static void main(String[] args) {
        new TestInners().go();
    }
    void go() {
        new A().m();
        class A {
            void m() {
                System.out.println("inner");
            }
        }
    }
    class A{
        void m(){
            System.out.println("middle");
        }
   }
}
O código acima imprime middle. Mas e se eu quisesse construir a classe A (não interna) de dentro do método go(), seria possível? Ou seja, como fazer o código acima imprimir outer sem excluir a classe A que imprime middle?

6 Respostas

ViniGodoy

Você teria que fazer new NomeDoPacote.A()

Sem um pacote, não creio que seja possível.

adriano_si
Não sei se é isso que vc quer...
class A {  
     void m(){  
         System.out.println("outer");  
     }  
 }  
   
 public class TesteInners {  
   
     public static void main(String[] args) {  
         new TesteInners().go();  
     }  
     void go() {  
         // new A().m();  
         class A {  
             void m() {  
                 System.out.println("inner");  
             }  
         }
         
         A a = new A();
         a.m();
     }  
     class A{  
         void m(){  
             System.out.println("middle");  
         }  
    }  
 }

[EDIT] - Foi mal... agora que ví... vc quer imprimir outer...

Falows ;)

adriano_si

Realmente… o Vinny tem razão…

Abs :wink:

Jairo_Junior1

ViniGodoy:
Você teria que fazer new NomeDoPacote.A()

Sem um pacote, não creio que seja possível.


Obrigado, o meu medo era que fosse possível sem um pacote.
Acho que tô começando a ficar paranóico. :oops:

ViniGodoy

java.lang.JJunior:
ViniGodoy:
Você teria que fazer new NomeDoPacote.A()

Sem um pacote, não creio que seja possível.


Obrigado, o meu medo era que fosse possível sem um pacote.
Acho que tô começando a ficar paranóico. :oops:

O java não foi feito para trabalhar sem pacotes. Dentro de qualquer pacote, as classes sem pacote ficam completamente inacessíveis.

ECO2004
Jairo Junior:
class A {
    void m(){
        System.out.println("outer");
    }
}

public class TestInners {

    public static void main(String[] args) {
        new TestInners().go();
    }
    void go() {
        new A().m();
        class A {
            void m() {
                System.out.println("inner");
            }
        }
    }
    class A{
        void m(){
            System.out.println("middle");
        }
   }
}
O código acima imprime middle. Mas e se eu quisesse construir a classe A (não interna) de dentro do método go(), seria possível? Ou seja, como fazer o código acima imprimir outer sem excluir a classe A que imprime middle?

Olá!

Eu não entendi a ordem de chamada do método m().
Alguém me poderia explicar como funciona ?

Criado 5 de janeiro de 2010
Ultima resposta 7 de jun. de 2011
Respostas 6
Participantes 4