前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >接口和多态性

接口和多态性

作者头像
ShenduCC
发布2018-08-01 15:19:08
2920
发布2018-08-01 15:19:08
举报
文章被收录于专栏:算法修养算法修养

接口:Interface 

接口是干嘛的呢?可以说接口主要就是来实现多态性。

多态性又是什么呢?多个态势。举一个例子,就可以把接口和多态非常好的理解。

以生活中点外卖为例子:

美团外卖:

代码语言:javascript
复制
public class MeiTuan
{
        ....
        //叫外卖
        public void CallTakeawary()
        {
           .....
         }
         ......
}       

饿了吗外卖

代码语言:javascript
复制
public class ELMa
{
        ....
        //叫外卖
        public void CallTakeawary()
        {
           .....
         }
         ......
}       

现在我需要叫外卖

代码语言:javascript
复制
public void eat()
{
     if(xxxx)
     {
          ELMa elma = new ELMa();
          elma.CallTakeaway();
      }
     else 
     {
          MeiTuan meituan = new MeiTuan();
          meituan.CallTakeaway();
      }
}

在没有接口的情况下我们是这样写的,问题来了

如果你又加了一个百度外卖,那么eat函数中又要new 一个BaiDu() ,给开发带来麻烦。我们希望的是,如果代码要扩展了,那么代码要尽最大可能的进行很小的改动就能实现。

但是如果有了接口:

代码语言:javascript
复制
public interface WaiMai
{
      void CallTakeaway()
}


public class MeiTuan : WaiMai
{
     .....
}

public class ELMa : WaiMai
{
    ......
}

eat函数就可以这么改写

代码语言:javascript
复制
public void eat(WaiMai waimai)
{
      waimai.CallTakeaway();
}

无论你加入多少个外卖商家,eat函数都不用改。这就是多态性的好处。它表示一个抽象类或者接口,可以被不同的子类继承或者实现,在代码中我们使用抽象类或者接口实例化对象,而不用去那些子类一个一个实例化。首先这样的好处是,原本可能要new很多个对象,现在只要一个就可以。所以代码可扩展性和可维护性都很好。

多态性,就是有多个类要实现相同的功能,这个时候你应该把这个相同功能的东西拿出来做成一个接口。约束这些子类。

多态性,接口可以实现,那么抽象类呢?同样也可以实现。我觉得抽象类和接口不同的地方除了 一个类可以实现多个接口且只能继承一个抽象类,还在于接口中不能实现方法,而抽象类可以。这个两个区别在代码加以好好应用就可以写出一手十分漂亮的代码。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-06-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档