zoukankan      html  css  js  c++  java
  • 深入.net(多态一)

    代码优化技术:

            当您在 编写一个类时,如果您发现你需要编写的“属性”和“方法”曾经在已有的类中实现,则,您可以将其共用的“属性”和“方法”剪切到一个新的“类”中,然后,让两个类共同继承这个“新类”。(使用 :,体现继承关系)

           此时,被继承类我们称为“父类”(基类),继承父类的类,我们称为“子类”(派生类)。所有的子类拥有父类所有对外公开的属性和方法,同时可以使用父类protected的资源。因此,我们完全可以说:“子类完全可以替换父类” ----- 里氏替换原则!

     

    当一个子类“替换”父类时:

              1、只能看到父类的“方法列表”,而无法看到和使用子类自己的“新方法”

               2、如果要使用其替换子类的“新方法”:

                              步骤一:先识别  ( is )  if (item is Teacher){}

                              步骤二:再转换

                                         类型强行转换 ----(Teacher)item

                                         as 进行转换  ---item as Student

                                         ---- 两种转换方式的区别:类型强制转换,如果转换失败,抛出异常!

    而使用  as 进行类型转换,转换失败,不会抛出异常,转换结果为NULL。

             3、当子类与父类,同时拥有“同签名的方法”(方法名相同、参数列表相同、返回类型相同)有如下几种情况:

     父类

    子类

    表现出的结果

    方法无改变

    方法前New(可省略)

    执行父类的方法

    virtual 修饰方法

    方法前New(可省略)

    执行父类的方法

    virtual 修饰方法

    override修饰方法

    子类的方法

    方法无改变

    override修饰方法

    编译错误(override必须成对出现)

      

             4、多态 ----- 相同的“方法调用”,却得到不同的“业务响应”;

                    应用场景:当对象的创建代码经常发生改变时(新的子类不断出现,新的业务实现不断的出现),会导致关联业务(使用子类的地方)频繁发生变化!此时,您可以考虑将创建对象的代码,统一放置到一个类中(工厂类),这样有新的子类诞生时,只需要修改工厂类的“创建方法”【简单工厂设计模式】

                            

     

     

     

     

     

    出发点:

            上一个项目写的代码,后续的项目要能继续使用; ---- 可复用【继承】

            项目做完后,要新功能时,最好只做少量改动,不影响原有功能; ---- 可扩展

            项目做完后,需求变化时,能快速修改,且少改动、还要稳定; ---- 可维护

  • 相关阅读:
    一些至理名言
    移除快捷方式上面那个丑陋的小箭头
    一些浏览器插件
    yahoo给出的关于网站优化的建议
    javascript 事件流
    关于mongodb的一些笔记
    WebStorm
    给go添加各种package
    工具类 util.Date 日期类
    几种简单排序算法
  • 原文地址:https://www.cnblogs.com/why168888/p/4283614.html
Copyright © 2011-2022 走看看