java回调函数 以及java多态

来源:互联网 发布:恒大淘宝 法律意见书 编辑:程序博客网 时间:2024/06/06 02:38
//程序1public class Caller  {      public MyCallInterface mc;      public void setCallfuc(MyCallInterface mc)      {         this.mc= mc;      }      public void call(){         this.mc.method();      }  } //定义一个接口public interface MyCallInterface  {      public void method();  } //然后让程序2去实现接口public class B implements MyCallInterface  {      public void method()      {         System.out.println("回调");      }      public static void main(String args[])      {         Caller call = new Caller();         call.setCallfuc(new B());         call.call();      }  }注:程序21调用自己程序中的一个方法,他通过1中的接口回调自己2中的方法,来达到目的,这就是回调。解释一个main方法的运行过程。 Caller call = new Caller(); 首先new一个对象。 call.setCallfuc(new B()); 紧接着调用方法,传的参数为new B(),该方法的参数为接口,所有实现了接口的类都能够被作为参数传进去(方法中不能传接口)。 call.call();  然后又调用了call()方法,又因为java的多态,B类重写了method()方法,所以调用this.mc.method()的方法,就会去找mc这个接口的实现方法method()。 打印结果:回调