多态的作用:面向抽象编程,不要面向具体编程,降低程序的耦合度,提高程序的扩展力
publiv class Master{
public void feed(Dog d){}
public void feed(Cat c){}
//假设又要养其它的宠物,那么这个时候需要再加一个方法(需要改代码)
//这样扩展力太差了,违背了OCP原则(对扩展开放,对修改关闭)
}
public class Master{
public void feed(Animal a){
//面向Animal父类编程,父类是比子类更抽象的。
//所以我们叫做面向抽象编程,不要面向具体编程
//这样的程序的扩展力就强
}
}
接口在开发的作用?
接口是完全抽象的,而我们以后正好要面向抽象编程,面向抽象编程这句话以后可以修改为面向接口编程。
有了接口就有了可插拔,表示扩展力很强,不是焊接死的。
分析:
中午去饭馆吃饭,这个过程有接口吗?
接口是抽象的
菜单是一个接口(菜单上有一个抽象的照片:西红柿炒鸡蛋)
谁面向接口调用(顾客面向菜单点菜,调用接口)
谁负责实现这个接口(后台的厨师负责把西红柿鸡蛋做好,是接口的实现者)
这个饭馆的“菜单”,让顾客和后厨解耦合了。顾客不用找后厨,后厨不用找顾客,他们之间完全依靠这个抽象的菜单沟通
总结一句话:
面向接口编程可以降低程序的耦合度,提高程序的扩展力。和多态离不开。