接口和多态性
Posted dacc123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接口和多态性相关的知识,希望对你有一定的参考价值。
接口:Interface
接口是干嘛的呢?可以说接口主要就是来实现多态性。
多态性又是什么呢?多个态势。举一个例子,就可以把接口和多态非常好的理解。
以生活中点外卖为例子:
美团外卖:
public class MeiTuan { .... //叫外卖 public void CallTakeawary() { ..... } ...... }
饿了吗外卖
public class ELMa { .... //叫外卖 public void CallTakeawary() { ..... } ...... }
现在我需要叫外卖
public void eat() { if(xxxx) { ELMa elma = new ELMa(); elma.CallTakeaway(); } else { MeiTuan meituan = new MeiTuan(); meituan.CallTakeaway(); } }
在没有接口的情况下我们是这样写的,问题来了
如果你又加了一个百度外卖,那么eat函数中又要new 一个BaiDu() ,给开发带来麻烦。我们希望的是,如果代码要扩展了,那么代码要尽最大可能的进行很小的改动就能实现。
但是如果有了接口:
public interface WaiMai { void CallTakeaway() } public class MeiTuan : WaiMai { ..... } public class ELMa : WaiMai { ...... }
eat函数就可以这么改写
public void eat(WaiMai waimai) { waimai.CallTakeaway(); }
无论你加入多少个外卖商家,eat函数都不用改。这就是多态性的好处。它表示一个抽象类或者接口,可以被不同的子类继承或者实现,在代码中我们使用抽象类或者接口实例化对象,而不用去那些子类一个一个实例化。首先这样的好处是,原本可能要new很多个对象,现在只要一个就可以。所以代码可扩展性和可维护性都很好。
多态性,就是有多个类要实现相同的功能,这个时候你应该把这个相同功能的东西拿出来做成一个接口。约束这些子类。
多态性,接口可以实现,那么抽象类呢?同样也可以实现。我觉得抽象类和接口不同的地方除了 一个类可以实现多个接口且只能继承一个抽象类,还在于接口中不能实现方法,而抽象类可以。这个两个区别在代码加以好好应用就可以写出一手十分漂亮的代码。
以上是关于接口和多态性的主要内容,如果未能解决你的问题,请参考以下文章