免费智能真题库 > 历年试卷 > 程序员 > 2018年上半年 程序员 上午试卷 综合知识
  第44题      
  知识点:   多态   多态(Polymorphism)和动态绑定(Dynamic Binding)
  关键词:   多态   过载   子类        章/节:   系统分析和设计基础知识       

 
多态分为参数多态、包含多态、过载多态和强制多态四种不同形式。其中,子类型化(一个类型是另一个类型的子类型)属于(44)多态;(45)多态是指同一个名字在不同上下文中可代表不同的含义。
 
 
  A.  参数
 
  B.  包含
 
  C.  过载
 
  D.  强制
 
 
 

 
  第44题    2014年上半年  
   22%
在面向对象方法中,(44)定义了超类和子类的概念,子类在原有父类接口的前提下,用适合于自己要求的实现去置换父类中的相应实现..
  第44题    2019年上半年  
   22%
在面向对象方法中,采用(44)可将对象的内部实现进行隐藏。一个对象通常由(45)组成。
  第48题    2012年下半年  
   24%
在面向对象设计时,若系统有交通工具、汽车、卡车和轿车,则(48)关系最适合用于表示这些类的设计。
   知识点讲解    
   · 多态    · 多态(Polymorphism)和动态绑定(Dynamic Binding)
 
       多态
        在C++语言中,所谓多态性,即对同一条信息,不同对象将产生不同的相应操作。简言之,以多种形式在多个对象上进行操作(但接口相同)。多态性一般通过对象的继承关系来实现。
        在讲多态性实现之前,首先讨论一下成员函数重载和虚函数的概念。
        成员函数的重载是指在派生类中定义和其祖先类中相同的函数,即函数名、参数个数、参数类型都相同。虽然函数的重载一定程度上满足了多态性,但是函数重载实现多态性的前提是知道接收消息的具体对象。这不能满足在现实世界中,消息发送者在发送消息之前,并不需要知道具体接收者的要求。函数的重载只是静态地满足了多态性的要求。重载的子程序是一种特别的多态。
        虚函数是在类的成员函数定义前面加上关键字virtual。虚函数仅给出方法的定义而不给出方法体。含有虚函数的类叫作抽象类。抽象类具有如下特性:①由于抽象方法没有体,因此抽象类不能实例化;②抽象类的子类必须给出所继承的抽象方法的体。
        在C++语言中,多态是通过虚函数来实现的。如果一个基类的成员函数定义为虚函数,那么,它在所有派生类中也保持为虚函数,派生类中可以省略virtual关键字。要达到多态的效果,基类和派生类的对应函数不仅名字相同,而且返回类型、参数个数和类型也必须相同。在C++语言中,不允许用抽象类创造对象,它只能被其他类继承。要定义抽象类,就必须定义纯虚函数,它实际上是起到接口的作用。对虚函数的限制是:只有类的成员函数才可以是虚函数;静态成员函数不能是虚函数;构造函数不能是虚函数;析构函数可以是虚函数,而且我们常常将析构函数定义为虚函数。
        例如:A是基类,B是A的派生类。现有如下程序:
        
        输出结果为:
        1
        2
        2
        根据输出结果,即可知多态的实现机理了。
 
       多态(Polymorphism)和动态绑定(Dynamic Binding)
        多态是指同一个操作作用于不同的对象可以有不同的解释,产生不同的执行结果,例如"画"操作,作用在"矩形"对象上则在屏幕上画一个矩形,而作用在"圆"对象上,则在屏幕上画一个圆。也就是说,相同操作的消息发送给不同的对象时,每个对象将根据自己所属类中定义的这个操作去执行,从而产生不同的结果。
        与多态性密切相关的一个概念就是动态绑定。传统的程序设计语言,把过程调用与目标代码的连接(即调用哪个过程)放在程序运行前进行(称为静态绑定),而动态绑定则是把这种连接推迟到运行时才进行。在一般与特殊关系中,子类是父类的一个特例,所以父类对象可以出现的地方,也允许其子类对象出现。因此在运行过程中,当一个对象发送消息请求服务时,要根据接收对象的具体情况将请求的操作与实现的方法连接,即动态绑定。
   题号导航      2018年上半年 程序员 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第44题    在手机中做本题