1

InterfaceInAbstractClass.javaPourquoi la ligne à l'intérieur de la méthode de l'argument méthode interne définie par l'argument méthode anonyme fonctionne-t-elle?

public abstract class InterfaceInAbstractClass { 

    public interface Inter{ 

     void interface_method(); 

    } 

    public void interface_abstract_class_method(Inter in){ 

    } 

} 

InterfaceInAbstractClassImplementer.java

public class InterfaceInAbstractClassImplementer extends InterfaceInAbstractClass{ 

    public static void main(String[] args){ 

//  InterfaceInAbstractClass.Inter abcd = new InterfaceInAbstractClass.Inter() { 
//   
//   @Override 
//   public void interface_method() { 
//    // TODO Auto-generated method stub 
//    System.out.println("An interface can be implemented "); 
//   } 
//  }; 
     System.out.println("An interface can be implemented "); 
     InterfaceInAbstractClassImplementer abc = new InterfaceInAbstractClassImplementer(); 
     abc.interface_abstract_class_method(new Inter() { 

      @Override 
      public void interface_method() { 
       // TODO Auto-generated method stub 
       System.out.println("An interface can be implemented within a class"); 
      } 
     });  
    } 
} 

Pourquoi le System.out.println ("Une interface peut être mis en œuvre dans une classe"); ne s'imprime pas?

+0

À première vue, vous appelez jamais. – markspace

+0

Parce que cela ne s'appelle pas –

+0

Vous devez appeler cette méthode. À l'heure actuelle, vous définissez simplement la méthode, sans l'appeler de n'importe où. – Aradhna

Répondre

1

Un petit tweak à votre classe pour appeler la implémenteur fonction d'interface

public class InterfaceInAbstractClassImplementer extends InterfaceInAbstractClass{ 

    public static void main(String[] args){ 

     System.out.println("An interface can be implemented "); 
     InterfaceInAbstractClassImplementer abc = new InterfaceInAbstractClassImplementer(); 
     Inter inter = new Inter() { 

      @Override 
      public void interface_method() { 
       // TODO Auto-generated method stub 
       System.out.println("An interface can be implemented within a class"); 
      } 
     }; 
     abc.interface_abstract_class_method(inter); 
    } 

    public void interface_abstract_class_method(Inter inter) { 
     inter.interface_method(); 
    } 
} 

Sortie:

An interface can be implemented 
An interface can be implemented within a class