2013-06-06 4 views
4

Vous avez essayé de créer 1 interface et 2 classes concrètes dans une classe Parent. Cela qualifiera les classes englobantes pour être des classes internes. méthodeComment appeler la méthode de la classe interne à partir de la méthode statique main()

public class Test2 { 

     interface A{ 
      public void call(); 
     } 

     class B implements A{ 
      public void call(){ 
        System.out.println("inside class B"); 
      } 
     } 

     class C extends B implements A{ 
      public void call(){ 
        super.call(); 
      } 
     } 


     public static void main(String[] args) { 
       A a = new C(); 
       a.call(); 

     } 
} 

Maintenant, je ne suis pas vraiment sûr de savoir comment créer l'objet de la classe C à l'intérieur de la méthode principale() statique et appeler l'appel de la classe C(). En ce moment, je reçois problème dans la ligne: A a = new C();

Répondre

5

Ici, la classe intérieure n'est pas statique, donc vous devez créer une instance de la classe externe, puis invoquer nouvelle,

A a = new Test2().new C(); 

Mais dans ce cas, vous pouvez faire la classe interne statique,

static class C extends B implements A 

alors il est autorisé à utiliser,

A a = new C() 
1

Vous devriez faire

A a = new Test2().new C(); 
4

Pour instancier une classe interne, vous devez d'abord instancier la classe externe. Ensuite, créez l'objet interne dans l'objet externe avec cette syntaxe:

OuterClass.InnerClass innerObject = outerObject.new InnerClass(); 

Vous devez utiliser:

A a = new Test2().new C(); 

Consulte la Java Tutorial.

+0

merci d'avoir mentionné le lien javadocs –

Questions connexes