|
知识路径: > 面向对象基础知识 > 面向对象基础知识 > 面向对象基础知识 > 面向对象程序设计 > 面向对象程序设计 >
|
被考次数:3次
被考频率:中频率
总体答错率:34%  
知识难度系数:
|
由 软考在线 用户真实做题大数据统计生成
|
考试要求:掌握
相关知识点:7个
|
|
|
|
|
类具有实例化功能,包括实例生成和实例消除完成。类的实例化决定了类及其实例具有下面的特征。
|
|
|
(1)同一个类的不同实例具有相同的数据结构,承受的是同一方法集合所定义的操作,因而具有规律相同的行为。
|
|
|
(2)同一个类的不同实例可以持有不同的值,因而可以具有不同的状态。
|
|
|
|
|
孤立的类只能描述实体集合的特征同一性,而客观世界中实体集合的划分还通常要考虑与实体特征方法有关联的相似性。在OOP中使用继承机制解决这一问题。
|
|
|
当执行一个子类的实例生成方法时,首先在类层次结构中从该子类沿继承路径上溯至它的一个基类,然后自顶向下地执行该子类的所有父类的实例生产方法,最后执行该子类实例生产方法的函数体。当执行一个子类的实例消除方法时,顺序正好与之相反:先执行该子类的实例消除方法,再沿继承路径自底向上地执行该子类所有父类的实例消除方法。
|
|
|
类的实例化过程是一种实例的合成过程,而不仅仅是根据单个类型进行的空间分配、初始化和联编。指导编译程序进行这种合成的,就是类层次结构。
|
|
|
|
对象是类的实例。尽管对象的表示在形式上与一般数据结构十分相似,但是它们之间存在本质区别:对象之间通过消息传递方式进行通信。
|
|
|
消息传递原是一种与通信有关的概念,OOP使得对象具有交互能力的主要模型就是消息传递模型。对象被看成用传递消息的方式互相联系的通信实体,它们既可以接收,也可以拒绝外界发来的消息。一般情况下,对象接收它能够识别的消息,拒绝不能识别的消息。
|
|
|
发送一条消息至少应给出一个对象的名字和要发送给这个对象的那条消息的名字。通常,消息的名字就是这个对象中外界可知的某个方法的名字。在消息中,还经常有一组参数,将外界的有关信息传递给这个对象。
|
|
|
对于一个类来说,它关于方法界面的定义规定了实例的消息传递协议,而它本身则决定了消息传递到合法范围。
|
|
|
|
对象自身引用是OOPLs中的一种特有结构。这种结构在不同的OOPLs中有不同的名称,在C++和Java中称为this,在Smalltalk-80、Object-C和其他一些OOPLs中则称为self。
|
|
|
对象自身引用的值和类型分别扮演了两种意义的角色:对象自身引用的值使得方法体中引用的成员名与特定的对象相关,对象自身引用的类型则决定了方法体被实际共享的范围。
|
|
|
对象自身引用机制使得在进行方法的设计和实现时并不需要考虑与对象联系的细节,而是从更高一级的抽象层次,也就是类的角度来设计同类型对象的行为特征,从而使得方法在一个类及其子类的范围内具有共性。
|
|
|
|
重置的基本思想是:通过一种动态绑定机制的支持,使得子类在继承父类界面定义的前提下,用适合于自己要求的实现去置换父类中的相应实现。
|
|
|
在OOPLs中,重置机制有相应的语法供开发人员选择使用。在C++语言中,通过虚拟函数(Virtual Function)的定义来进行重置的声明,通过虚拟函数跳转表(Virtual Functions Jump Tables,VTBL)结构来实现重置方法体的动态绑定。在Java语言中,通过抽象方法(Abstract Method)来进行重置的声明,通过方法查找(Method Lookup)实现重置方法体的动态绑定。
|
|
|
|
类属是程序设计语言中普遍注重的一种参数多态机制。类属类可以看作类的模板。一个类属类是关于一组类的一个特性抽象,它强调的是这些类的成员特征中与具体类型无关的那些部分,而与具体类型相关的部分则用变元来表示。这就使得对类的集合也可以按照特性的相似性再次进行划分。类属类的一个重要作用,就是对类库的建设提供强有力的支持。
|
|
|
|
要创建无实例的类需要语言的支持。在C++和Java语言中,抽象类就是这样的类。在C++中通过在类中定义纯虚拟函数来创建一个抽象类,在Java中通过在类中定义抽象方法来创建一个抽象类,或者直接将一个类声明为抽象类。
|
|
|