继承与多重继承
考试要求: 了解     
知识路径:  > 数据库主流应用技术  > 数据库主流应用技术  > 数据库主流应用技术  > 面向对象数据库  > 面向对象数据模型


 
       在面向对象数据模型中,所有类形成了一个有限的层次结构或者是有根的无环有向图,我们称之为类层次。如有一个类C和一个连接到C的一组较低层类的集合S,则集合S中的类称为类C的子类,而类C又称为集合S中类的父类。集合S中的任何类继承类C的所有属性和方法,并可以有自己定义的属性和方法。一个父类可以有多个子类,一个子类也可以有多个父类,都存在直接关联或者间接关联的现象。
       在面向对象数据模型中存在着两种继承:继承(单继承)和多重继承。在大多数情况下,类的继承足以满足应用的要求,典型的树型结构组织用来表示类层次。在树型结构组织中,每个类最多有一个父类,即一个子类只能继承一个父类的属性、方法和消息。然而,有些情况用树型结构并不能很好地表达类层次。多重继承允许一个类从多个直接父类中继承属性、方法和消息,此时类层次可以用一个有向无环图来表示。
       在下图中给出了一个学校数据库的类层次结构图,通过它我们分别来解释类层次、继承和多重继承。
       
       具有多继承的类层次结构图
       在这个学校应用的面向对象数据库系统中,“人”是其他所有类的父类,它是这个有向无环图的根,是一个最高的类层次;在下面的一个类层次中,教工和学生是人的子类,它们继承了人的所有属性、方法和消息,同时又有本身的特殊属性、方法和消息;在最低的一个类层次中,教师、行政人员、工人和在职研究生是教工的子类,它们继承了教工和人的所有属性、方法和消息,在职研究生、研究生和本科生是学生的子类,它们继承了学生和人的所有属性、方法和消息。值得一提的是,在职研究生既是教工的子类,也是学生的子类,它同时继承了教工和学生两个父类的所有属性、方法和消息。
       类的继承带来很多的优点,子类在继承父类特性的同时,还可以定义自身的属性、方法和消息,但这样就可能和父类的属性、方法和消息发生冲突。这类冲突可能发生在子类和父类之间,通常由系统解决。对于子类和父类之间的同名冲突,一般是以子类定义的为准。但是在多继承中,一个子类可以有多个父类,如果这些父类中存在同名冲突,就会发生二义性。例如,教工和学生都有方法“显示信息”,它们共同的子类在职研究生就不知道应该继承哪一个方法了。在多继承中有三种处理二义性的方案:一是由用户选择继承的优先次序;二是由系统指定继承某一个父类的定义;三是如果出现了二义性问题,就不允许多继承,甚至有些面向对象数据库系统根本不允许多继承。
 

更多复习资料
请登录电脑版软考在线 www.rkpass.cn

京B2-20210865 | 京ICP备2020040059号-5
京公网安备 11010502032051号 | 营业执照
 Copyright ©2000-2025 All Rights Reserved
软考在线版权所有