第十三章多重继承和多重替换MultipleInheritanceandMultiple.ppt
《第十三章多重继承和多重替换MultipleInheritanceandMultiple.ppt》由会员分享,可在线阅读,更多相关《第十三章多重继承和多重替换MultipleInheritanceandMultiple.ppt(23页珍藏版)》请在三一办公上搜索。
1、第十三章 多重继承和多重替换Multiple Inheritance and Multiple Substitutability,多重继承当一个子类从一个以上的超类型继承属性和方法多从替代不同类型的对象之间的相互替代,多重继承,现实世界的复杂性,由于一个实体的多哥角色性,在进行泛化抽象时,常常需要从不同角度进行。反之,一个实体可以从不同继承特征,构成多重继承。如图 OT3继承了OT1和OT2的全部特征(属性,操作)OT3是OT1和OT2的一个类型扩展OT3的实例既可以替换OT1实例,也可以替换OT2实例,多重继承的有向无环图 DAG,多重继承构造了一个有向无环图,其总根为ANY类型的层次结构是
2、连通的,没有孤立子,从根可以到达每一个类型结点,反子亦然类型的层次结构是无回路的,即多重继承不支持递归若只有单重继承,则DAG转化为树GOM的多重继承是全继承概念,多重继承带来的问题,(一)操作OP的歧义-操作冲突冲突原因:一个op名字分别在不同父类(祖先)OT1,OT2中说明,操作体不同,则造成子类OT3在全继承情况下,op操作名的二义性。若op在共同的祖先,如OT0中被定义,但在不同的父类型如OT1,OT2中被分别重定义,从而造成在OT3中的二义性。,操作二义性举例,一个操作bonus(奖励)分别在Student和Employee有定义,当一个奖励作用在”TA”上时,究竟应当怎么处理呢?,
3、declare bonus:Student|float declare bonus:Employee-void|float-void code bonusForStudents;code bonusForEmps;define define bonusForStudents(gpaInc)is bonusForEmps(salInc)isself.gpa:=self.gpa*gpaInc;self.salary:=self.salary*salInc;增加一个百分点的GPA;增加一个百分点的Salary,var bestEmp:Employee;bestStudent:Student;myTA
4、,yourTA:TeachAsst;boss:Manager;(1)bestEmp:=myTA;(2)bestEmp.bonus(1.1);!假定应当增加salary(3)bestStudent:=yourTA;(4)bestStudent.bonus(1.05);!假定应当增加gpa(5)boss.bonus(1.5);!不会产生二义性,多重继承的操作冲突解决方案,注意:为了兼容已有程序,不能通过修改超类中的操作名来解决问题解决冲突的方法定义优选权,允许用户指定继承的优先权用户通过对Supertype子句中超类型队列来指定优先权type OT supertypes OT1,OTn is,方法
5、(1)实现选择op的方法:A:首先确定op是否在本类型中被定义B:按DAG图,从优先队列中每一个超类开始,向上扫描每个枝条直到根,顺序检查op名称,首先被遇到的op被选中,解决冲突之方法二-显式重命名,对所继承的同名的操作,分别在当前子类型中重新命名虽然操作op的名字在超类中不能修改,但在当前子类中可以用重命名来代替,不会影响兼容性。Type OTSupertypes OT1(renames op to op1)OTm-1(renames op to opm-1)OTm,is,解决冲突方法三重定义操作,对op进行重新精化有两种选择:A:在当前子类型OT3中重新定义op操作B:在OT3中指定凡遇
6、到op操作实际上将与哪一个超类的op捆绑。define type OT3 supertypes OT1,OT2 is operations refine op implementation define op self.OT1$op();!执行OT1中定义op方法end type OT3;,多重继承带来的冲突二-类型冲突,类型冲突是更严重的且目前无法消解的问题(1)属性类型冲突:从不同的父类分别继承了一个同名但类型不同的属性如OT1.A与OT2.A类型不相容在OT3中对同名不相容的属性错误无法在静态编译时被检查出,只有在运行时才能出现。,(2)操作类型冲突从不同的父类分别继承了一个同名但返回类
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第十三 多重 继承 替换 MultipleInheritanceandMultiple
链接地址:https://www.31ppt.com/p-4748452.html