接口和多态性

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

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

 

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

 

以上是关于接口和多态性的主要内容,如果未能解决你的问题,请参考以下文章

每个人单核苷酸多态性(SNP)形成的原因是啥?

多态性和动态铸造

Java面向对象多态和接口

php学习笔记 面向对象中[接口]与[多态性]的应用

多态与抽象以及接口

C#多态性学习,虚方法抽象方法接口等用法举例