多态的四种形式
来源:互联网 发布:vmware12安装centos几 编辑:程序博客网 时间:2024/05/16 09:59
在收到消息时,对象要予以响应。不同的对象收到同一消息可以产生完全不同的结果,这一现象称为多态。在使用多态的时候,用户可以发送一个通用的消息,而实现的细节由接收对象自行决定。这样,同一消息就可以调用不同的方法。多态的实现受到继承的支持,利用类继承的层次关系,把具有通用功能的消息存放在高层次,而不同的实现这一功能的行为放在较低层次,在这些低层次的对象能够给通用消息以不同的响应。
2、 包含多态:在许多语言中都存在,最常见的例子就是子类型化,即一个类型是另外一个类型的子类型。一般需要进行运行时的类型检查,属于动态多态。包含多态的基础是虚函数。虚函数是引入了派生概念后用来表现基类和派生类的成员函数之间的一种关系。
3、 过载多态:同一个名字在不同的上下文中所代表的含义不同。典型的例子是运算符重载和函数重载,属于静态多态。
4、 强制多态:编译程序通过语义操作,把操作对象的类型强行加以变换,以符合函数或操作符的要求。程序设计语言中基本类型的大多数操作符,在发生不同类型的数据进行混合运算时,编译程序一般都会进行强制多态。程序员也可以显示地进行强制多态的操作。如 int+double,编译系统一般会把 int 转换为 double,然后执行 double+double 运算,这个int->double 的转换,就实现了强制多态,即可是隐式的,也可显式转换。强制多态属于静态多态。
多态性不仅增加了面向对象软件系统的灵活性,进一步减少了信息冗余,而且显著提高了软件的可重用性和可扩充性。
多态总体上分为:编译时的多态(静态多态)和运行时的多态(动态多态)。 Cardelli 和Wegner 把多态细分为 4 类:参数多态,包含多态,过载多态,强制多态,前两种为通用多态,后两种为特定多态。
2、 包含多态:在许多语言中都存在,最常见的例子就是子类型化,即一个类型是另外一个类型的子类型。一般需要进行运行时的类型检查,属于动态多态。包含多态的基础是虚函数。虚函数是引入了派生概念后用来表现基类和派生类的成员函数之间的一种关系。
3、 过载多态:同一个名字在不同的上下文中所代表的含义不同。典型的例子是运算符重载和函数重载,属于静态多态。
4、 强制多态:编译程序通过语义操作,把操作对象的类型强行加以变换,以符合函数或操作符的要求。程序设计语言中基本类型的大多数操作符,在发生不同类型的数据进行混合运算时,编译程序一般都会进行强制多态。程序员也可以显示地进行强制多态的操作。如 int+double,编译系统一般会把 int 转换为 double,然后执行 double+double 运算,这个int->double 的转换,就实现了强制多态,即可是隐式的,也可显式转换。强制多态属于静态多态。
多态性不仅增加了面向对象软件系统的灵活性,进一步减少了信息冗余,而且显著提高了软件的可重用性和可扩充性。
阅读全文
0 0
- 多态的四种布控形式
- 多态的四种不同形式
- 多态的四种形式
- C++的四种强制转型形式
- C++的四种强制转型形式
- 电子处理的四种形式
- C++的四种强制转型形式
- cocos2d数据存储的四种形式
- Android之dialog的四种形式
- 内部类的四种形式
- 安卓的四种启动形式
- ThinkPHP的四种路由形式
- ThinkPHP的四种路由形式
- switch反汇编的四种形式
- JavaScript函数的四种调用形式
- 四种参数传递的形式
- 柯西-施瓦茨不等式的四种形式
- Makefile文件四种形式
- Linux下安装Nginx
- RPGMaker MV 插件基础06:了解游戏数据与F8调试
- win10下安装Docker
- Android Input流程分析(三):InputReader
- HashMap深度解析(一)
- 多态的四种形式
- java面试-hashmap总结
- wamp2.4添加php7和apache
- C#--带参SQL语句数通用数据访问类
- PAT 1012. The Best Rank (25) 数据结构,排序
- 人工智能方面书籍
- linux操作系统原理
- 实现在地图上显示几个坐标点
- RabbitMQ之惰性队列(Lazy Queue)