zoukankan      html  css  js  c++  java
  • 接口和多态性

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

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

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

  • 相关阅读:
    正确使用Core Data多线程的3种方式
    iOS开发周报:新一代 iPhone 可能取消耳机插口,Facebook 发布 tvOS SDK
    Atomic:Android、iOS和网页的设计工具
    iOS应用架构谈(三):View层的组织和调用方案(下)
    SQL server 2008数据库的备份与还原(转)
    重定向技术
    Python 正则表达式应用【转载】
    Fidder 工具使用
    HTTP请求大全
    RobotFramework环境搭建
  • 原文地址:https://www.cnblogs.com/dacc123/p/9180133.html
Copyright © 2011-2022 走看看