第8章继承与组合.pptVIP

  1. 1、本文档共81页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第8章继承与组合

继承与组合 第八章 8.1 继承的概念 现实世界中,组织概念常使用继承来构成一种层次结构,描述的是IS-A关系。 例如:苹果是一种水果; 汽车是一种交通工具等。 在IS-A关系中,每个概念都具有其上一层概念所有的特性,同时又具有自身的特殊性。 继承 继承的优点 代码的可重用性-类库 重定义基类的成员函数 向派生类添加新成员 不需要了解核心技术的细节 8.2 C++中的继承 一、基本概念 1、基类、派生类 以原有的类为基础产生新类,在这个过程中原有的类称为基类,新类称为派生类。 汽车类派生出卡车类。在此过程中,我们称汽车类为基类,卡车类为汽车类的派生类。 注意: 派生类的声明必须指定基类的名称 class Manager : public Employee 任何类都能用作基类 基类分为两种类型 直接基类 间接基类 例1: 处理某企业中雇员的程序 例2: 定义基类shape class shape { private: int m_x,m_y; //位置 char m_color; //颜色 public: void setposition(int x, int y); void setcolor(char color); int getx(); int gety(); char getcolor(); }; 派生新类: circle 圆形 rectangle 矩形 triangle 三角形 2、C++支持的继承形式 一个派生类可以从一个基类派生,也可以从多个基类派生。从一个基类派生的继承称为单继承;从多个基类派生的继承称为多继承。 单一继承 多级继承 直接基类和间接基类 直接基类 class A { }; class B : public A //A是B的直接基类 { }; 间接基类 class A { }; class B : public A { }; class C : public B //A是C的间接基类 { }; 层次继承 多重继承 3、继承访问控制 派生类的函数 能够访问基类的保护和公有成员 派生类的对象 公有派生的类的对象能够访问基类的公有成员 私有和保护派生的类的对象不能访问基类的任何成员 (1) 继承方式 注意: 派生类不能访问基类的私有成员 公有继承不改变基类成员的访问级别 基类的另外两种访问级别使得所有继承的成员与基类成员(私有基类的私有成员或保护基类的保护成员)属于相同的访问级别 (2)可访问性 类成员总是能够被它们自己的类的方法访问 继承类能访问基类的公有或保护成员 公有成员可以在任何地方被访问 (3)实例 例:程序清单8-1 4、继承的语法 * 程序演示 类Person 、类Student 二、继承中的构造函数和析构函数 派生类的对象的数据结构是由基类中说明的数据成员和派生类中说明的数据成员共同构成。 将派生类的对象中由基类中说明的数据成员和操作所构成的封装体称为基类子对象,它由基类中的构造函数进行初始化。 构造函数不能被继承,对派生类必须重新定义构造函数。 在声明一个派生类对象时,系统首先要通过派生类的构造函数调用基类的构造函数,对基类成员初始化;然后对派生类中新增的成员初始化。 程序清单8-2、8-3 继承中的析构函数 程序清单8-4 * 程序演示 类Car 、类SportCar 三、派生类中继承成员函数的重定义 例:调用成员函数 习题(1) #include iostream class B{ private: ?????int i; public: ???? void set_i(int n) { i=n; } ????? int get_i() {return i;}???? }; class D: public B{ int j; public : void set_j(int n) { j=n; } int nul() { return j*get_i(); } }; int main( ) { ??D ob; ??????ob.set_i(10); ob.set_j(4);????????? ?? coutob.nul(); ?? ???? return 0; } 如果 class D: public B { … }; 继承访问控制方式改为:class D: private B { … };或 class D: protect B { … }; 则D类中继承的成员、ob对象的访问控制是什么情况? 习题(2) class Base { pr

文档评论(0)

wuailuo + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档