6继承性的 派生类.ppt

  1. 1、本文档共87页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
6继承性的 派生类

第6章 继承性:派生类 6.1 派生类的概念 6.2 单继承 6.3 派生类的构造函数和析构函数 6.4 多重继承 6.5 函数名隐藏 6.6 赋值兼容规则 6.7 应用举例 在面向对象程序设计中引入继承的目的就是为了重用已有的程序源代码。继承是一个对象获得另一个对象的特性的过程。 通过继承,无需修改已有类的源代码,就可以从这个类派生一个新类来扩充已有类,满足不断变化的具体应用要求。达到代码重用和易维护、可扩充的目的。 6.1 派生类的概念 保持已有类的特性而构造新类的过程称为继承(inheritance)。 在已有类的基础上新增自己的特性而产生新类的过程称为派生(derive)。 被继承的已有类称为基类(或父类)。 派生出的新类称为派生类(或子类)。 现有的Student类 Class Student{ int number; string name; float score; public: Student(int number1, string name1, float score1); void modify(float score1); void print( ); }; 在学生类的基础上创建大学生类:派生 class Ustudent : public Student { string major; //专业 public: Ustudent(int number1, string name1, string major, float score1); void print( ); }; // Ustudent除了具有Student的特性外,还有新的特性,如专业。 类的继承层次与分类结构 按照类继承的方式构建的C++的程序的结构是由一些类构成的树形结构或者有向无环图的形式。 类的继承层次与分类结构 C++程序中类的继承层次结构非常像人们分析问题时所用的分类结构。使用类继承方式构造软件系统,大大改善了软件系统的可理解性和可维护性。 6.2 单继承 派生类只有一个基类的时称为单继承。 单继承时类层次为树形结构 派生类声明的一般形式 class 派生类名:访问控制符 基类名 { 成员定义; }; 访问控制符( access specifier )必须下列是三者之一: public(公有), private(私有), protected(保护)。 公有继承 (inherit as public) 公有派生 (derived as public) 当访问控制符是public的时候,所有基类的公共成员都成为派生类的公共成员。所有基类的受保护成员也都成为派生类的受保护成员。 但基类的私有成员在派生类中不能被访问。 【例6.3】 class Shape { double width; double height; public: void showSize() { cout Width and height are width and height \n; } }; // 从Shape类派生出三角形Triangle类 class Triangle : public Shape { public: double area() { return width * height / 2; } }; 一个有争议的问题 基类中的私有成员不能被其派生类成员直接访问。继承来的特性不能直接使用似乎于理不通,但是派生类不加限制的访问基类的私有成员,将破坏基类的封装性,这是面向对象方法中有争议的问题之一。(两难问题) 解决方法: 使用受保护成员(protected members)。 使用基类的公有函数访问私有数据成员。 class Shape { double width; double height; public: void showSize() { cout Width and height are width and height \n; } double getWidth() { return width; } double getHeight() { return height; } void setWidth(double w) { width = w; } void setHeight(double h) { height = h; }

文档评论(0)

liwenhua00 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档