在java中实现回调(CallBack)是通过多态实现的,通过一个方法动态绑定到不同的实现过程。
例如,在做餐时,买菜、洗菜等过程都已经固定,而做菜的形式不同,可能做鱼、米饭、面条等等,这个时候我们可以将做菜的方法写入代码中,在不同的做菜需求时,通过类的继承实现多态的动态绑定:
public class Cook { public void cook() { System.out.println("做晚餐"); } } //实现做鱼的类 class Fish extends Cook{ public void cook() { System.out.println("晚餐做香辣鱼"); } } //实现做面条的类 class Noodles extends Cook{ public void cook() { System.out.println("晚餐做面条"); } } //实现做米饭的类 class Rice extends Cook{ public void cook() { System.out.println("晚餐做米饭"); } } class MyMian { public static void dinner(Cook c) { System.out.println("买好了菜"); System.out.println("洗好了菜"); System.out.println("开始准备做菜"); c.cook(); System.out.println("菜已做好"); System.out.println("正在吃晚餐"); } public static void main(String[] args) { System.out.println("-------------掉用做鱼的cook方法--------------"); dinner(new Fish()); System.out.println("-------------掉用做面条的cook方法--------------"); dinner(new Noodles()); System.out.println("-------------掉用做米饭的cook方法--------------"); dinner(new Rice()); } }
-------------调用做鱼的cook方法--------------
买好了菜
洗好了菜
开始准备做菜
晚餐做香辣鱼
菜已做好
正在吃晚餐
-------------调用做面条的cook方法--------------
买好了菜
洗好了菜
开始准备做菜
晚餐做面条
菜已做好
正在吃晚餐
-------------调用做米饭的cook方法--------------
买好了菜
洗好了菜
开始准备做菜
晚餐做米饭
菜已做好
正在吃晚餐