java的多态与回调

在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方法--------------
买好了菜
洗好了菜
开始准备做菜
晚餐做米饭
菜已做好
正在吃晚餐


猜你喜欢

转载自blog.csdn.net/m_target/article/details/80393452