文档介绍:第6章派生类与继承
继承与派生类
为什么引入继承的机制?
问题的提出:
学校中的人员分为行政干部、教员、学生、战士等几类,如果要设计一个学校人员管理系统,各类人员具有许多共同的属性,如果对每一类人员都从头构建一个类,将会有大量相同的代码,将增加程序的代码量。如果在这几个类之上再增加一个类,用于存放大家共有的属性,如姓名、性别、年龄等,让其它几个类共享,同时,其他几个类又具备各自的特殊属性,这样代码量将会大大减少。这种方式在编程中就称为继承。
使用继承的机制,使得在既有类的基础上可以创建新的类。新类可以从一个或多个既有类中继承函数和数据,而且可以重新定义或追加新的数据和函数,从而形成类的层次或等级结构。
继承的关系又称为一般-特殊关系。
所产生的新的类称为派生类。
;
人类或者动植物的繁衍现象是一种典型的继承现象。
学生
小学生中学生大学生研究生
;
例如: 汽车
运输汽车专用汽车
客车货车消防车洒水车
其中,最上层的汽车具有普遍的意义,具备了下属所有类型车辆的共同特性,往往是抽象的概念,其他各层也类似。最小层的车辆具有最为丰富的内涵。
例如,学习方式采用的就是一种继承的机制。文明的发展也是基于继承。
,同时还有所创新,具备自身的特点。
结论:正因为继承机制是一种普遍存在的现象,在编程中才引入了这种机制。通过使用继承机制,可以通过增加少量的代码或者修改少量的代码的方法得到新的类,从而较好地解决了代码复用的问题。既能够提高编程的效率,又便于分工合作,同时,整个系统的人性化特点非常明显,又增强了程序的可读性。
在OO技术中,常把上层称为父类,下层称为子类。继承又称为派生。子类继承父类,父类派生子类。
:
即从系统研究的角度来分,继承分为单继承和多继承.
:
(1)取代继承
(2)包含继承
(3)受限继承
(4)特化继承
从继承分类的两个方面可以看出,所有的继承关系都存在类与类之间,而且都具有两类不同的性质,.
在面向对象系统中,有了封装机制以后,对象之间只能通过消息传递进行通讯;那么继承机制的引入是否消弱了对象概念的封装性,继承和封装是否矛盾?
其实两个概念没有实质性的冲突,封装性主要是指对象的封装性,即将属于某一类的一个具体的对象封装起来,,,.
从另一个角度看,继承和封装机制还具有一定的相似性,它们都是一种代码共享的手段,.
当一个类B从类A中派生出来,B类继承了A类的部分属性或全部属性,B类作为一个派生类,它又可以再派生新类,这样我们可以从某一个类派生出所需的任意多的类,这就形成了类的层次。
class A{
//….
};
class B:public A{
//…….
};
class C:public B{
//……..
};
A
B
C
类的层次关系可以清楚有效地表示现实世界中事物的分类问题
A
B
C
D
E
单继承
A
B
C
D
E
F
多继承
多重继承的引入,使面向对象系统大大增加了模拟世界的能力
五、面向对象系统的继承性
在面向对象系统中,引入继承机制后具有如下优点:
(1)能清晰体现相关类间的层次结构关系.
(2)能减少代码和数据的重复冗余度,大大增加程序的重用性.
(3)能通过增强一致性来减少模块间的接口和界面,大大增加程序的易维护性.
(4)继承是能自动传播代码的有力工具.
(5)继承还是在一些比较一般的类的基础上构造、建立和扩充新类的最有效的手段。
在面向对象系统中,继承性不仅作用于对操作的继承,还作用在对数据内容的继承,即既具有结构特性的继承性,又具有行为特性的继承性。