2014-09-14 2 views
0

J'ai deux classes. La classe externe Mainannony et une classe interne anonyme qui remplace la classe externe Mainannony la méthode display() mais en utilisant la référence de classe outerclass.appel de la méthode surchargée de la classe externe

class Mainannony { 
    public void display(){ 
     System.out.println("java annonymous"); 
    } 
    public static void main(String arg[]) { 
     Mainannony a1=new Mainannony(){ 
      public void display(){ 
       System.out.println("this is the annonymous class"); 
      } 
     }; 
     a1.display(); 
    } 
} 

L'appel de la méthode interne fonctionne. Mais, quand j'ai essayé d'appeler la méthode de classe externe en utilisant outerclass.this.method(), il montre l'erreur non static variable this cannot be referenced from a static context.

+0

Yup, 'main' est' static'. –

Répondre

0

La méthode display() que vous créez remplace l'implémentation par défaut; vous créez une sous-classe anonyme de Mainannony. Donc, si vous vouliez appeler l'implémentation par défaut depuis la classe anonyme, vous utiliseriez super.display(). En dehors de la classe anonyme, comme dans la méthode main(), ce n'est pas possible avec juste une référence à l'instance anonyme .

Questions connexes