码迷,mamicode.com
首页 > 其他好文 > 详细

深入理解多态

时间:2017-12-25 11:25:00      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:传递   检查   创建   connect   lsp   里氏替换   log   nbsp   抽象   

 

    里氏替换原则和多态的应用

      里氏替换原则(LSP)

      ·在一个软件系统中,子类对象可以替换所有使用的父类对象,

       且程序行为没有变化

      ·父类中的子类进行转换 

        1、SE se = (SE)empls;类型转换

        2、SE se = empls as SE;类型转换,如果不是同一类型,输出null,也会报错

      ·使用父类作为参数使用,可以接收多种子类类型

      ·根据实际传递的子类对象执行相对应子类的方法进行重写

 

    小结:

      用虚方法实现多态的步骤

         @子类重写父类的虚方法

         @两种方式

          创建父类变量,实例化子类对象

          把父类类型作为参数类型,该子类及子类对象作为参数传入

        @运行时,根据实际创建的对象决定执行那个方法

      里氏替换原则

        @子类对象可以代替父类对象,反过来,父类对象不能代替子类对象

        @会使用父类类型作为参数

        @is操作符用于检查对象和指定的类型是否兼容

        @as操作符用于两个对象之间的类型转换

 

    抽象类和抽象方法

      技术分享图片

 

      技术分享图片

          抽象类用来列举一个类所需要的行为

      抽象类不明确提供具体实现方法

      抽象类必须由其子类实现它的抽象方法(除非子类也具有抽象性)

      @抽象类不能被实例化

      @抽象类不能是密封的或静态的(抽象类不能用seald或static修饰)

    抽象类和抽象方法

      @抽象类通常代表一个抽象的概念

      @抽象方法约束子类对象的行为

        @比如:抽象的动物类,具有抽象方法吃()、喝()

    虚方法

      @具体类的默认实现、提供其子类扩展实现方式

        @比如:数据库链接类,Connect()方法实现与SQL Server的链接,数据库链接子类继承并重写,实现与其他数据库的链接

      技术分享图片

 

      面向对象的三大特征

      封装:

        隐藏内部实现,稳定外部接口

      继承:

        子类继承父类成员,实现代码重用

      多态:

        不同子类对同一个消息作出不同的反应

   总结:

      抽象方法

        是一个未实现的方法

        用abstract关键字修饰

        含有抽象方法的类必然是抽象类

      使用抽象方法和虚方法都可以实现多态性

      面向对象的三大特性是封装、继承和多态

      

 

           

 

      

 

深入理解多态

标签:传递   检查   创建   connect   lsp   里氏替换   log   nbsp   抽象   

原文地址:http://www.cnblogs.com/mlq2017/p/8085116.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!