1

InterfaceInAbstractClass.java爲什麼參數定義方法匿名內部類的方法內部工作?

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"); 
      } 
     });  
    } 
} 

爲什麼所述的System.out.println( 「接口可以在一個類中來實現」);沒有打印?

+0

乍一看,你永遠不調用它。 – markspace

+0

因爲沒有調用 –

+0

您需要調用該方法。現在你只是定義方法,而不是從任何地方調用它。 – Aradhna

回答

1

一個小調整到您的實施者類調用接口函數

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(); 
    } 
} 

輸出:

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