4.1 Inheritance-Basic.pptVIP

  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文档。上传文档
查看更多
4.1 Inheritance-Basic

西安电子科技大学 内容结构 为什么引入继承 继承的基本概念 子类和基类对象存储结构关系 访问控制 调整基类的访问控制 名字隐藏 2. 继承相关概念 子类 (派生类) 父类(基类) 直接父类 / 间接父类 单重继承 只允许一个类最多有一个直接父类 多重继承 允许一个类有多个直接父类 类层次结构 在一个面向对象的系统中,子类与父类之间的继承关系构成了这个系统的类层次结构,可以用树(对应于单重继承)或格(对应于多重继承)这样的图来描述 继承的一般形式 class derived-class : access base-class { //…… } 继承的层次结构 继承的层次结构 4. 访问控制 一个类继承另一个类时,基类的成员就成为派生类的成员,派生类中的基类成员的访问状态由用于继承基类的访问限定符决定 基类的访问限定符必须是public, private, protected 在缺省的情况下是private. 访问控制小结之上表解释 将基类作为public继承的情况下: 基类的公有成员保持其公有性,且派生类的成员可以对其访问. 基类的私有成员保持其私有性,且派生类的成员不可对其访问. 基类的保护成员保持其保护性,且派生类的成员可以对其访问. 可以看出,通过使用保护成员,可以生成对其类来说是私有的成员,但是可以被派生类继承和访问.当一个派生类作为另一个派生类的基类时,由第一个派生类从基类继承的任何保护成员都可以再一次作为保护成员被第二个派生类继承. 在将基类作为private继承的情况下: 基类的公有成员变成私有成员,可以被派生类访问,但是不能被程序的其他部分访问 基类的私有成员保持其私有性,且派生类的成员不可对其访问. 基类的保护成员变成私有成员, 可以被派生类访问,但是不能被程序的其他部分访问 在将基类作为protected继承的情况下:(略) Adjusting Access The access status of an inherited member can be changed with a using declaration. Name Hiding If a derived class adds a data member with the same name as a data member in the base class, the local data member hides the inherited data member. Name Hiding 名字隐藏 当父亲和儿子具有相同的属性名时,该怎么办呢? 继承中,子类继承了父类的所有成员 若子类和父类成员同名,当访问父类的同名成员时,需要使用域作用算子 如果派生类和基类中存在名字相同的方法,从基类继承的方法会被派生类中的同名方法隐藏 对于名字重置,要求派生类和基类中存在函数签名完全相同的虚拟方法 #include iostream.h class BC { private: int y; public: int x; void h( float ) {}; }; class DC : public BC { public: int x; void h( char[ ] ) {}; }; int main ( ) { BC d0; DC d1; d1.h( Boffo! ); d1.BC::h( 707.7 ); //ok //d1.h( 707.7 ); //compile error d0.x = 2; coutd1.x value is d1.x \n; // an invalid value coutd0.x value is d0.x \n; //2 d1.x = 9; coutd1.x value is d1.x \n; //9 coutd0.x value is d0.x \n; //2 coutd1.BC::x value is d1.BC::x \n; // an invalid value cout“the size of base class ” sizeof(BC)“\n”; //8 coutthe size of subclass class sizeof(DC)\n; //12 return 0; } * 西安电子科技大学软件工程研究所 刘惠 * 西安电子科技大学软件工程研究所 刘惠 继 承 1. 为什么引入继承?(原因1) 如果将相似的事物用不同的类型来表示,能够表示其差别,但体现不

文档评论(0)

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

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

1亿VIP精品文档

相关文档