zoukankan      html  css  js  c++  java
  • 多态---继承的产物

    什么是多态

    继承的直接结果是--代码复用:子类可以方便地复用父类的代码。 而多态就是继承的另一直接结果了:子类可以通过重写父类的方法,达到同一基类的对象拥有不同的动作的效果。

    多态的使用原则

    角色要纯粹。重写父类的方法目的不是为了引入与子类不相关的其他逻辑。这么做的目的是为了提高子类代码的可重用性。 当需要复用某个子类时,不需要把它引入的不相关依赖一并引入。当子类中确实需要处理一些不相关逻辑时, 用拦截器的方式(AOP)。

    至于文中提到的四种场景:

    1. 父类有部分public方法不需要,也不允许子类重写(但子类需要调用)
    2. 父类的有些方法必须要子类去重写,父类的方法其实是个空方法
    3. 父类的有一些方法是可选重写,一旦重写,以子类为准
    4. 父类有一些方法即便被重写,父类原方法还是要执行的

    我认为,第2种确实可以通过IOP来替代多态,强制子类必须实现, 第4种也可以通过IOP在父类中规定执行顺序。其他2种用多态的方式未尝不可。各人习惯而已,没必要非用IOP。尤其是第3种,这简直就是多态的设计初衷。另外对于2中提到的父类中的空方法,这本身也不是个问题。iOS的UIViewController中提供的很多方法也是空方法。

    Ref

    原文在这里

  • 相关阅读:
    kill tomcat with netstat
    windows cmd命令显示UTF8设置
    rtx没有振动功能
    手动加载rvm
    RESTful Java client with Apache HttpClient
    Set Up Git on windows also use github
    lcs.py 最长公共子串算法
    如何:对代理使用 IP 切换
    这个博客站点不错
    a case study
  • 原文地址:https://www.cnblogs.com/mindyme/p/4682222.html
Copyright © 2011-2022 走看看