2022年2022年关于继承的一些解释和例子 .pdf





《2022年2022年关于继承的一些解释和例子 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年关于继承的一些解释和例子 .pdf(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 对继承的讨论1. 继承的形式和继承的原理class 派生类名: 继承方式基类名成员声明;上面是继承的形式。当继承发生后,可以认为派生类拥有了基类的成员。例:class A public: int i; void show()coutiendl; ; class B: public A public: int m; void print()coutmendliendl; ; void main() B b; b.m; b.i; b.show(); b.print(); 这个例子就是继承的写法。其中类A 是类 B 的父类,类 B 是类 A 的子类。可以认为类 B 拥有了类 A 的所有, 也就是
2、 B 中拥有了来自 A 的 i 和 void show() 函数。b.m; b.i; b.show(); b.print();都是对的。因为 b 是 B 类型的对象, 所以 b拥有了 A 和 B 的所有成员。2. 关于继承方式(上面的红字部分)继承方式 有三种,分别是 public,private,protected。我们认为 private 为最严格的限制级别,认为protected为中等的限制级别,认为 public 为宽松的限制。当继承发生时,我们可以认为 父类的成员(无论成员函数还是数据成员)会迁移一份到子类。父类的成员也拥有访问的级别, 这些级别也是由public, private,
3、protected 来说明的。如果继承,则父类中的成员迁移至子类。父类成员迁移至子类成员时,访问级别以父类和继承方式中更严的为准。派生类对基类成员的使用,与继承访问控制和基类中成员性质有关公有继承基类的公有成员派生类的公有成员基类的保护成员派生类的保护成员私有继承基类的公有成员和保护成员派生类的私有成员名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 8 页 - - - - - - - - - 2 保护继承基类的公有成员和保护成员派生类的保护成员公有继承class A pr
4、ivate: int m; void print_private()cout ” private” endl; protected: int n; void print_ protected ()cout” protected” endl; public: int q; void print_ public ()cout ” public ”endl; ; class B: public A public: int i; void function() ; void main() B b; 此时,类 B 拥有了类 A 的所有成员。并且这些成员在A 中是什么形式,迁移到B 中还是什么形式。也就是
5、继承完之后B 看上去就是如下的样子:class B private: int m; void print_private()cout ” private” endl; protected: int n; void print_ protected ()cout” protected” endl; public: int q; void print_ public ()cout ” public ”endl;public: int i; void function() ; 红色的成员可以视为B 的成员,但这些成员来自于A 的成员迁移。蓝色的代表迁移过程中访问性质变化。 其中, 一定要注意,B 的
6、对象 b只能 访问 public名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 8 页 - - - - - - - - - 3 下的成员, 通过 public 下的成员函数可以访问protected 下的成员, ? .但是, 来自 A 的 private 成员必须用 来自 A 的成员函数 来访问。也就是 function 可以激活除去 m 和 print_private()的剩下的所有内容,因为m 和print_private()是 A(也就是父类 )的私有的成员。保护继
7、承class A private: int m; void print_private()cout ” private” endl; protected: int n; void print_ protected ()cout” protected” endl; public: int q; void print_ public ()cout ” public ”endl; ; class B: protected A public: int i; void function() ; void main() B b; 此时,类 B 拥有了类 A 的所有成员。 A 成员迁移至 B 后,从前的限制
8、级别比访问级别严格的或者相等的则不变,访问级别限制比protected 宽松的则变为protected 。也就是继承完之后B 看上去就是如下的样子:class B private: int m; void print_private()cout ” private” endl; protected: int n; void print_ protected ()cout” protected” endl; protected: int q; void print_ public ()cout ” public ”endl;public: 名师资料总结 - - -精品资料欢迎下载 - - - -
9、 - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 8 页 - - - - - - - - - 4 int i; void function() ;红色的成员可以视为B 的成员,但这些成员来自于A 的成员迁移。蓝色的代表迁移过程中访问性质变化。其中,一定要注意, B 的对象 b 只能访问 public 下的成员,通过public 下的成员函数可以访问protected下的成员,但是,来自A的 private 成员必须用来自A 的成员函数 来访问。也就是function 可以激活除去m 和 print_private()的剩下的所有
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年2022年关于继承的一些解释和例子 2022 年关 继承 一些 解释 例子

限制150内