继承与派生类.pptxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
7.1 基本概念1、继承与派生 继承是面向对象语言提供的一个重要机制,它在类与类之间建立了层次关系。首先从下面的实例当中体会继承的概念。class Box{private : int width,height;public: void SetWidth(int w) { width = w;} void SetHeight(int h) {height = h;}};class ColorBox{private : int width,height; int color;public: void SetWidth(int w) { width = w;} void SetHeight(int h) {height = h;} void SetColor(int c) { color = c;}};从上述代码可以看出,类ColorBox具有类Box的所有数据成员和成员函数,还用自己特有的color数据成员和SetColor成员函数。换句话说,彩色盒子是一种盒子,它具有普通盒子的特征,同时又具有自己独特的一面。 既然ColorBox具有了Box的所有成员,能不能在定义ColorBox是不写出Box的成员,而直接引用过来呢?class Box{private : int width,height;public: void SetWidth(int w) { width = w;} void SetHeight(int h) {height = h;}};//同上class ColorBox : public Box{ private: int color; public: void SetColor(int c) { color = c;} };说明:(1) class ColorBox : public Box 表示类ColorBox是从类Box共有派生出来的,它告诉编译器类ColorBox继承了Box的所有成员。 继承,就是新的类从已有类那里得到已有的特性。从另一个角度来看,从已有类产生新类的过程就是类的派生。已有的类称为基类或父类,产生的新类称为派生类或子类。派生类同样也可以作为基类再派生新的类,这样就形成了类的层次结构。 类的继承和派生的层次结构,可以说是人们对自然界中的事物进行分类、分析和认识的过程在程序设计中的体现。现实世界中的事物都是相互联系、相互作用的,人们在认识过程中,根据事物的实际特征,抓住其共同特性和细小差别,利用分类的方法进行分析和描述。哺乳动物…基类人海豚工人农民学生商人…派生类派生类机关工作人员事业单位 工人企业工人…工人儿子丈夫中年男人2、单一继承和多重继承 单一继承中派生类只能有一个基类,多重继承中派生类可以有多个直接基类。7.1 多重继承7.2 派生类的三种继承方式类派生的基本形式为:class派生类名: 访问控制符 基类名{ ……}; 访问控制符可以是:private,public,protected,分别表示私有派生,公有派生,保护派生。 如果不写明访问控制符,即缺省的情况下,如果基类是类定义的,那么默认为私有派生;如果是struct或union定义的,则为公有派生。 在实际应用当中用的最多的是共有派生。1、公有派生 在公有派生中基类的私有成员将称为派生类的不可访问成员,基类的公有成员将称为派生类的公有成员。 什么是不可访问成员?它是比私有成员访问还严格的成员。在派生类中不能通过派生类的对象访问基类的私有成员。看下面的例子:class Box{…};//同上class ColorBox: public Box{…};//同上void main( ){ ColorBox ob1; ob1.SetWidth(1); ob1.SetHeight(2); ob1.SetColor(3); ColorBox ob2; ob2.Width = 1 ; //非法 ob2.color = 3; //×} 如果在ColorBox内有另外一个成员函数,它能否访问width和height?*2、私有派生 在私有派生中,基类的私有成员成为派生类的不可访问成员,基类的公有成员成为派生类的私有成员。 在派生类的成员函数中访问基类成员应遵守以下原则: 无论是公有派生还是私有派生,在派生类的成员函数中都不能访问基类当中的私有成员。 无论是公有派生还是私有派生,在派生类的成员函数中都可以访问基类的公有成员。3、保护成员 用protected说明的成员称为保护成员,保护成员的访问权限介于私有和公有之间。其规则为: 派生类的成员函数可以访问基类的保护成员,但是在基类和派生类之外,程序不能访问类的保护成员。 class Box{protected : int width,height;};clas

文档评论(0)

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

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

1亿VIP精品文档

相关文档