软考选择题关于多态的知识点经常考,容易混淆,不好理解,特此记录下。
多态分类
- 参数多态
- 包含多态
- 过载多态
- 强制多态
含义区别
1.参数多态
又叫静态多态。采用模块化参数,通过给出不同的参数类型,使得个结构有多种类型。它的执行速度快,异常少,调用编译时已经确定。应用范围广。
2.包含多态
又叫动态多态。子类型化,即一个类型是另一个类型的子类型。一般需要进行运行时的类型检查。
包含多态的基础是虚函数。虚函数是为了引入派生概念后用来表现基类和派生类的成员函数之间的一种关系。
3.过载多态
同一个名字在不同的上下文中所代表的含义不同。典型的例子是运算符重载和函数重载,属于静态多态。
4.强制多态
编译程序通过语义操作,把操作对象的类型强行加于变换,已符合函数或操作符的要求。属于静态多态。
多态常考题目
1、多态有不同的形式,( )的多态是指同一个名字在不同上下文中所代表的含义不同。
A.参数 B. 包含 C.过载 D.强制
答案C
本题考查面向对象概念。
参数多态:应用广泛、最纯的多态。
包含多态:同样的操作可用于一个类型及其子类型。包含多态一般需要进行运行时的类型检查。包含多态在许多语言中都存在,最常见的例子就是子类型化,即一个类型是另外一个类型的子类型。
强制多态:编译程序通过语义操作,把操作对象的类型强行加以变换,以符合函数或操作符的要求。
过载多态:同一个名(操作符﹑函数名)在不同的上下文中有不同的类型。 目前软设考查比较多的是过载多态。
故本题选择C选项。