《面向对象程序设计》.ppt
《《面向对象程序设计》.ppt》由会员分享,可在线阅读,更多相关《《面向对象程序设计》.ppt(36页珍藏版)》请在三一办公上搜索。
1、面向对象程序设计理论篇,武汉大学资源与环境科学学院地理信息科学系,教材及参考资料:,面向对象的理论与C+实践 王燕 编著 清华大学出版社,By:任福 博士Email:renfuRoom:7-501,第十一章:继承与类的派生,要设计可重用性模块,任何方法都必须面对重复和差别,为了避免一再地重写同样的代码,引入不一致的错误,就必须进行抽象,抽象出一般特性后,还需在此基础上扩充其特殊的功能,使之能表达具体的事物。继承是软件重用的一种形式,实现这种形式的方法是从现有类建立新类。新类继承了现有类的属性和行为,并且为了使新类具有自己所需要的功能,新类还要对这些属性和行为予以修饰。,青出于蓝而胜于蓝!,11
2、、派生类的概念,第十一章:继承与类的派生,继承是对象类之间的一种相交关系,是派生关系,具有以下性质:(1)类间的共享特性;(2)类间的细微区别;(3)类间的层次结构。在建立一个新类时,程序员可以让新类继承预定义基类的数据成员和成员函数。这种新类称为派生类,派生类本身也可能成为未来派生类的基类。对于单重继承,派生类只有一个基类。对于多重继承,派生类通常是从多个基类派生出来的,这些基类之间可能毫无关系。派生类通常添加了它自己的数据成员和成员函数,因而通常比基类大的多。派生类比基类更具体,它代表了一组外延较小的对象。对于单重继承,派生类和基类有相同的起源。继承的真正魅力在于能够添加基类所没有的特点及
3、取代和改进从基类继承来的特点。,11、.为什么使用继承,第十一章:继承与类的派生,继承的目的在于为代码重用提供有效手段()可以重用先前项目的代码,如果原来的代码不满足要求,还可以做少量修改。()某个项目使用了几个非常相似或稍有不同的类,就可以通过派生类的继承性达到函数和数据继承的目的。继承最具有吸引力的特点是新类可以从现有的类库中继承,项目开发者可以开发出自己的类库。基于这种观点,将来有一天,软件也可以象当今的硬件一样用标准的可重用组件进行构造。,11、.派生类的定义,第十一章:继承与类的派生,派生类具有的特征:新的类可在基类所提供的基础上包含新的成员;在新的类中可隐藏基类的任何函数成员;可为
4、新的类重新定义函数。定义格式:Class派生类名 继承方式基类名 派生类新定义成员其中 继承方式常使用如下三种关键字给予表示:public表示公有基类private表示私有基类,可以省略protected表示保护基类,11、.派生类对基类成员的访问权,第十一章:继承与类的派生,派生类并不是对基类中的所有成员都可以无条件的进行访问对于基类的私有成员,派生类及派生类的使用者都无权访问。对于基类的公有成员的访问权,在定义派生类时,定义的方式不同,权限也不同。,11、.派生类对基类成员的访问权,第十一章:继承与类的派生,、私有派生,私有派生类对基类的公有成员只能是私有继承,也即基类的所有公有成员都只能
5、成为私有派生类的私有成员,这些私有成员只能被派生类的成员函数访问,而派生类的使用者无权访问。若希望基类中某些公有成员在派生类中也是公有的,使得派生类的使用者能够使用它,则可以在派生类的公有段中说明这些成员,并在成员名前缀上“类名”。有几个成员需要成为派生类的公有成员,在派生类中分别给出类似的定义。,举例见教材P169-170,11、.派生类对基类成员的访问权,第十一章:继承与类的派生,2、公有派生,公有派生的意义是基类中所有的公有成员在派生类中也都是公有的,这就省去了每个成员均要在派生类中声明才能变为公有的工作。基类的公有成员保持原有的状态。,举例见教材P170,11、.派生类对基类成员的访问
6、权,第十一章:继承与类的派生,、示意图,举例见教材P171-172-173,class base,private,public,class derive1:base,private,public,class derive2:public derive1,private,public,11、.派生类的构造函数和析构函数,第十一章:继承与类的派生,(1)派生类构造函数,我们已知道,派生类的对象的数据结构是由基类中说明的数据成员和派生类中说明的数据成员共同构成。将派生类的对象中由基类中说明的数据成员和操作所构成的封装体称为基类子对象,它由基类中的构造函数进行初始化。构造函数不能够被继承,因此,派生类
7、的构造函数必须通过调用基类的构造函数来初始化基类子对象。所以,在定义派生类的构造函数时除了对自己的数据成员进行初始化外,还必须负责调用基类构造函数使基类数据成员得以初始化。如果派生类中还有子对象时,还应包含对子对象初始化的构造函数。,11、.派生类的构造函数和析构函数,第十一章:继承与类的派生,(1)派生类构造函数,派生类构造函数的一般格式如下:():(参数表1),();,举例见教材P176,11、.派生类的构造函数和析构函数,第十一章:继承与类的派生,(1)派生类构造函数,在下面两种情况下,必须定义派生类的构造函数:派生类本身需要构造函数;定义派生类对象时,其相应的基类对象需调用带有参数的构
8、造函数。可以不定义派生类构造函数的情况:若基类使用缺省构造函数或不带参数的构造函数,在派生类定义构造函数时,可以省略基类“:构造函数(变元表)”;在此情况下,若派生类不需要初始化,则可以不定义派生类构造函数。,执行顺序是:先祖先(基类),再客人(对象成员),后自己(派生类),11、.派生类的构造函数和析构函数,第十一章:继承与类的派生,()派生类析构函数,在派生类中是否要定义析构函数与基类无关,各自独立执行。若基类、成员类、派生类均有析构函数,在执行时的顺序刚好与构造函数的顺序相反。即:派生类-成员类-基类,执行顺序是:先自己(派生类),再客人(对象成员),后祖先(基类),11、.派生类的构造
9、函数和析构函数,第十一章:继承与类的派生,()带有构造函数和析构函数的类的派生类举例,举例:【举例】(派生类与基类的构造函数和析构函数调用顺序),举例见教材P177-178,11、派生类对基类成员的继承,第十一章:继承与类的派生,焦点:如何来调整派生类的访问权限?,11、.如何访问基类私有成员,第十一章:继承与类的派生,不管私有派生还是公有派生,派生类无权访问基类私有成员,只有通过基类提供的公有函数(接口)进行访问。为达到直接访问可以采用以下两种方式:增加保护段声明友元,11、.如何访问基类私有成员,第十一章:继承与类的派生,、在类定义体中增加保护段,关键字:protected将基类私有成员中
10、需提供给派生类访问的部分定义为保护段成员。保护段成员可以被它的派生类访问,但是对于外界是隐藏起来的。即:就这个类的用户而言,它是private的,但它可被从这个类继承来的任何来使用。派生类对于保护段成员的继承与公有段成员的继承很相似,分以下两种情况:公有派生:基类的保护成员在派生类中处于保护成员;私有派生:基类的保护成员在派生类中处于私有成员;,举例见教材P184,11、.如何访问基类私有成员,第十一章:继承与类的派生,、将需要访问基类私有成员的派生类成员函数声明为基类的友元,基类的保护段成员可以通过一定的处理(连续的公有派生),使其成为对外界开放的。将待访问的派生类中的成员函数说明是基类的友
11、元,这样派生类中的其他成员函数都无权访问它,外界不可能通过派生新类来达到访问基类私有成员的目的。如果想让派生类中的所有成员函数均有权访问基类的私有成员,可以将整个派生类声明为基类的友元。,11、.通过访问声明调整访问域,第十一章:继承与类的派生,访问声明用来改变到派生类中变为私有的基类公有成员的访问域。它遵循以下规则:(1)访问声明仅仅调整名字的访问,不可以为它说明任何类型;若名字为成员函数,在访问声明时也不准说明任何参数;(2)访问声明只能调整基类的保护段和公有段成员在派生类中的访问域,不能改变基类的私有成员在派生中的访问域,任何试图这样的操作都是非法的;(3)访问声明仅用于在派生类中调整名
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向对象程序设计 面向 对象 程序设计
链接地址:https://www.31ppt.com/p-6529526.html