zoukankan      html  css  js  c++  java
  • 6、多态性-1、多态性概述

    面向对象程序设计的真正力量不仅仅在于继承,而在于将派生类对象当基类对象一样处理的能力。支持这种能力的机制称为多态和动态绑定。

    1、多态是指同样的消息被不同类型的对象接收时导致不同的行为,所谓消息是指对类的成员函数的调用,不同的行为是指不同的实现,也就是调用了不同的函数。

    2、多态类型

    面向对象的多态性可以分为四类,重载多态、强制多态、包含多态和参数多态,前两种称为专用多态,后两种称为通用多态

    我们学习过的普通函数及类的成员函数的重载都属于重载多态。强制多态是指将一个变元的类型加以变化,以符合一个函数或者操作的要求,如加法运算符在进行浮点数与整型数相加时,首先进行类型强制转换,把整型变为浮点型再相加的情况,就是强制多态的实例。

    包含多态是研究类族中定义于不同类中的同名成员函数的多态行为,主要是通过虚函数来实现

    参数多态与类模板相关联,在使用时必须赋予实际的类型才可以实例化。这样,由类模板实例化的各个类都具有相同的操作,而操作对象的类型却各不相同。

    3、多态的实现

    多态从实现的角度来讲可以划分为两类:编译时的多态和运行时的多态。前者是在编译的过程中确定了同名操作的具体操作对象,而后者则是在程序运行过程中才动态确定操作所针对的具体对象。这种确定操作的具体对象的过程就是绑定(binding,也叫做联编)。绑定是指计算机程序自身彼此关联的过程,也就是把一个标识符名和一个存储地址联系在一起的过程;用面向对象的术语讲,就是把一条消息和一个对象的方法相结合的过程。

    绑定阶段不同分为:静态绑定和动态绑定,这两种绑定过程中分别对应着多态的两种实现方式。

    绑定工作在编译连接阶段完成的情况称为静态绑定。比如,重载、强制和参数多态。

    绑定工作在程序运行阶段完成的情况称为动态绑定。如包含多态操作对象的确定就是通过动态绑定完成的。

  • 相关阅读:
    Oracle备份恢复之无备份情况下恢复undo表空间
    Oracle HA 之 测试RAC的功能
    (转)Python——functools
    (转)Python标准库:内置函数print(*objects, sep=' ', end=' ', file=sys.stdout, flush=False)
    (转)用Python写堡垒机项目
    (转)Python进阶:函数式编程(高阶函数,map,reduce,filter,sorted,返回函数,匿名函数,偏函数)
    (转)Linux中的位图
    (转)Python标准库02 时间与日期 (time, datetime包)
    (转)Python 3 collections.defaultdict() 与 dict的使用和区别
    (转)python高级:列表解析和生成表达式
  • 原文地址:https://www.cnblogs.com/gary-guo/p/6247038.html
Copyright © 2011-2022 走看看