2010-05-11 5 views
98

J'ai implémenté une classe imbriquée dans Java et j'ai besoin d'appeler la méthode de classe externe à partir de la classe interne.Appel de la fonction de classe externe à partir de la classe interne

class Outer { 
    void show() { 
     System.out.println("outter show"); 
    } 

    class Inner{ 
     void show() { 
      System.out.println("inner show"); 
     } 
    } 
} 

Comment puis-je appeler la méthode Outershow?

+0

Peut-on supposer que votre classe interne est titulaire d'une instance de la classe externe? – Eric

+12

@Eric: en Java, une instance d'une classe interne non statique TOUJOURS contient une instance de la classe externe – newacct

+0

@Eric: cela est toujours vrai dans une classe interne Java non statique! –

Répondre

174

Vous devez préfixer l'appel par la classe externe:

Outer.this.show(); 
+3

Génial. J'ai un suivi à ce sujet. Comment appeler une méthode dans la classe externe à partir d'un endroit totalement différent en ayant une instance de classe interne. Inner myInner = new Outer(). New Inner(); ... par exemple si la classe externe a une méthode publique getValue(). myInner.getValue() ne fonctionnerait pas, myInner.Outer.getValue() non plus. Je sais que je peux le faire en ayant une méthode getOwner dans Inner et puis l'appeler .. mais ai-je besoin de cette méthode? merci – momomo

+0

Si externe est une interface alors comment appeler la méthode abstraite de la classe interne ..? –

1

Cela devrait faire l'affaire:

Outer.Inner obj = new Outer().new Inner(); 
obj.show(); 
Questions connexes