码迷,mamicode.com
首页 > 其他好文 > 详细

接口和多态性

时间:2018-06-13 21:46:58      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:开发   就是   接口   不同   ace   美团   十分   相同   TE   

接口: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很多个对象,现在只要一个就可以。所以代码可扩展性和可维护性都很好。

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

 

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

 

接口和多态性

标签:开发   就是   接口   不同   ace   美团   十分   相同   TE   

原文地址:https://www.cnblogs.com/dacc123/p/9180133.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!