Java 为什么参数定义方法匿名内部类的行内部方法可以工作?

Java 为什么参数定义方法匿名内部类的行内部方法可以工作?,java,inner-classes,anonymous-class,anonymous-methods,anonymous-inner-class,Java,Inner Classes,Anonymous Class,Anonymous Methods,Anonymous Inner Class,InterfaceInAbstractClass.java public abstract class InterfaceInAbstractClass { public interface Inter{ void interface_method(); } public void interface_abstract_class_method(Inter in){ } } InterfaceInAbstractClassImple

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(“接口可以在类中实现”);没有打印?

对实现者类进行一个小调整,以调用接口函数

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

乍一看,你永远不会调用它。因为它不会被调用。你需要调用那个方法。现在您只是定义方法,而不是从任何地方调用它。