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

    代码优化技术:

            通过“继承”技术,实现代码的复用,减少代码的编写量。

            因为子类继承父类,拥有了父类所有对外公开“属性”和“方法”,所以,在系统中,完全可以由子类替代父类(里氏替换原则)!在替代的过程中,子类不仅仅能替代父类完成与父类一模一样的业务功能,也可以使用“自己业务逻辑”替代掉“父类原有的业务逻辑”,这样,不同的子类在替换父类时,就能够表现出“不同业务形态”---多态。

     

    “多态”的形式:

    形式一: 父类      obj = New  子类();   --- virtual【虚方法】

    形式二:抽象类  obj  =  New   子类();   ---  abstruct【抽象方法】、virtual【虚方法】

    形式三:接口       obj =  New  实现类(); ---  【接口方法】

     

    “抽象方法”及“抽象类”:

             抽象方法 ---- 只有方法的描述,而没有具有实现!({ })用于描述本类,想要但无法去实现的“业务功能”!

             抽象类 -------  含有抽象方法,或者被使用abstruct修饰的类。抽象类是不能够使用New创建实例的!

             注意: 当一个子类继承了“抽象类”时,您必须实现其“所有的抽象方法”!(除非子类也是抽象的)

     

     

    三种“多态”形式的比较:

           形式一:父类方式,站在“代码实现”的角度,父类为子类提供代码实现的基础,减少新类的代码开发量。

           形式三:接口方式,站在“框架设计”的角度,实现多态性。不涉及一点点的代码实现。

           形式二:抽象类,是一种折中的方式。既有对子类的“业务支撑”,同时对子类有苛刻的业务要求。【抽象类的语法是最宽泛的:字段、属性、业务方法、构造方法、虚方法、抽象方法。】

     

                        
      

     虚方法

      
      

    抽象方法

      
      

    virtual

      
      

    abstract

      
      

    必须有方法体  {      }

      
      

    不允许有方法体

      
      

    什么地方都行

      
      

    只能”抽象类“中

      
      

    子类可以重写,也可以不重写

      
      

    必须重写

      

     

     

    如何让我们的代码编写,能体现出OO特性:

             -------  从代码实现角度

             在编写一个个业务类的过程中,

      • 如果,多个类具有“相同的属性”和“相同业务逻辑”的方法,我们就可以将其剪切到一个“父类”中,并让这多个类“继承”于该父类。
      • 如果,这多个类实现“同样功能”的方法中,部分类“实现逻辑一致”,个别类实现逻辑不一样,此时,将大部份相同的实现逻辑,剪切到“父类”,但是该剪切的方法使用virtual进行修饰,并将未剪切的类的方法前加上override。
      •  如果,这多个类实现“同样功能”的方法中,各自实现的逻辑都不同,此时,只提取方法的签名到“父类”,并使用abstract进行修饰。当然子类使用override重写。
      •  如果,不是所有的子类都具有“某功能”,而只有部分子类具有!将其方法签名提取到一个接口中,并让该子类在继承父类的基础上,再继承于该接口。通过该接口实现多态!
  • 相关阅读:
    华为ensp使用
    网络学习目录
    MySQL简介
    zip命令详解
    gzip命令详解
    unzip/tar命令详解
    tar命令详解
    ipython使用
    os, sys, stat 模块使用
    配置linux系统时区---解决ntp同步完时间不准问题
  • 原文地址:https://www.cnblogs.com/why168888/p/4283618.html
Copyright © 2011-2022 走看看