Como a Inner class acessa a classe superior? [RESOLVIDO]

3 respostas
wellington7

Tenho um código como este:

class A{

 void façaAlgo(){

  // Alguns comandos aqui..

 }

 class innerA{

  void execute(){

   façaAlgo(); // Não funciona...

   // Outros comandos aqui...

  } //fim execute()

 } // fim innerA

} // fim A

Como faço para chamar esta função façaAlgo na innerClass?

3 Respostas

ViniGodoy

É assim mesmo!

Aqui funcionou e não deu nenhum erro de compilação.

Lógico, cedo ou tarde a classe A, terá que criar uma instância de innerA e então chamar o método execute, como no exemplo abaixo:

class A{
 
  private void façaAlgo(){
      System.out.println("Fui chamado!!!");
  }
  
  public void callInner() {
      InnerA innerA = new InnerA();
      innerA.execute();
  }
  
  public static void main(String args[])
  {
      A a = new A();
      a.callInner();
  }

  class InnerA{
 
   void execute(){
 
    façaAlgo(); // Não funciona...
    // outos comandos aqui...
 
   } //fim execute()
  } // fim innerA
 
 } // fim A
R

Para funcionar, a inner class deve estar dentro da classe A. Qualquer coisa diferente disso ela não é inner class né :smiley:


A inner class consegue acessar a classe “superior” porque ela é uma atributo desta classe.

flw,

Roger Leite

adriano.ferranti

A sua pergunta não está de acordo com o título do tópico. Se o que você quer realmente é acessar a classe de nível superior, seria:

A.this
Criado 20 de abril de 2007
Ultima resposta 20 de abr. de 2007
Respostas 3
Participantes 4