6、多态性-1、多态性概述
面向对象程序设计的真正力量不仅仅在于继承,而在于将派生类对象当基类对象一样处理的能力。支持这种能力的机制称为多态和动态绑定。
1、多态是指同样的消息被不同类型的对象接收时导致不同的行为,所谓消息是指对类的成员函数的调用,不同的行为是指不同的实现,也就是调用了不同的函数。
2、多态类型
面向对象的多态性可以分为四类,重载多态、强制多态、包含多态和参数多态,前两种称为专用多态,后两种称为通用多态。
我们学习过的普通函数及类的成员函数的重载都属于重载多态。强制多态是指将一个变元的类型加以变化,以符合一个函数或者操作的要求,如加法运算符在进行浮点数与整型数相加时,首先进行类型强制转换,把整型变为浮点型再相加的情况,就是强制多态的实例。
包含多态是研究类族中定义于不同类中的同名成员函数的多态行为,主要是通过虚函数来实现。
参数多态与类模板相关联,在使用时必须赋予实际的类型才可以实例化。这样,由类模板实例化的各个类都具有相同的操作,而操作对象的类型却各不相同。
3、多态的实现
多态从实现的角度来讲可以划分为两类:编译时的多态和运行时的多态。前者是在编译的过程中确定了同名操作的具体操作对象,而后者则是在程序运行过程中才动态确定操作所针对的具体对象。这种确定操作的具体对象的过程就是绑定(binding,也叫做联编)。绑定是指计算机程序自身彼此关联的过程,也就是把一个标识符名和一个存储地址联系在一起的过程;用面向对象的术语讲,就是把一条消息和一个对象的方法相结合的过程。
绑定阶段不同分为:静态绑定和动态绑定,这两种绑定过程中分别对应着多态的两种实现方式。
绑定工作在编译连接阶段完成的情况称为静态绑定。比如,重载、强制和参数多态。
绑定工作在程序运行阶段完成的情况称为动态绑定。如包含多态操作对象的确定就是通过动态绑定完成的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】