C++复习要点总结之八——继承一
来源:互联网 发布:android开源app源码 编辑:程序博客网 时间:2024/06/03 09:59
一 不同的继承方式会改变继承成员的访问属性
public 修饰的成员变量、方法 在类的内部和外部都可以使用。
protected 修饰的成员变量、方法在类的内部使用,在继承的子类中使用,类的外部不能使用。(是为了在家族中使用,为了得到继承!)
private 修饰的成员变量、方法 只能在类的内部使用,不能在类的外部使用
1)C++中的继承方式会影响子类的对外访问属性
public继承:父类成员在子类中保持原有访问级别
private继承:父类成员在子类中变为private成员
protected继承:父类中public成员会变成protected
父类中protected成员仍然为protected
父类中private成员仍然为private
2)private成员在子类中依然存在,但是却无法访问到。不论种方式继承基类,派生类都不能直接使用基类的私有成员。
3)C++中子类对外访问属性表
父类成员访问级别
继
承
方
式
public(继承方式)
proteced(继承方式)
private(继承方式)
public
public
proteced
private
proteced
proteced
proteced
private
private
private
private
Private
三看原则:
C++中的继承方式(public、private、protected)会影响子类的对外访问属性
判断某一句话,能否被访问
1)看调用语句,这句话写在子类的内部、外部
2)看子类如何从父类继承(public、private、protected)
3)看父类中的访问级别(public、private、protected)
派生类类成员访问级别设置的原则
思考:如何恰当的使用public,protected和private为成员声明访问级别?
1、需要被外界访问的成员直接设置为public
2、只能在当前类中访问的成员设置为private
3、只能在当前类和子类中访问的成员设置为protected,protected成员的访问权限介于public和private之间。
二 类型兼容性原则
类型兼容规则是指在需要基类对象的任何地方,都可以使用公有派生类的对象来替代。通过公有继承,派生类得到了基类中除构造函数、析构函数之外的所有成员。这样,公有派生类实际就具备了基类的所有功能,凡是基类能解决的问题,公有派生类都可以解决。类型兼容规则中所指的替代包括以下情况:
子类对象可以当作父类对象使用
子类对象可以直接赋值给父类对象
子类对象可以直接初始化父类对象
父类指针可以直接指向子类对象
父类引用可以直接引用子类对象
在替代之后,派生类对象就可以作为基类的对象使用,但是只能使用从基类继承的成员。
类型兼容规则是多态性的重要基础之一。
第一层含义:1-1 基类指针(引用)指向子类对象
Parent *p = Null;
p = &c1;
p->printp();
1-2 指针做函数参数
howToPrint(&p1);
howToprint(&c1);
1-3引用做函数参数
howToprint2(p1);
howToprint2(c1);
第二层含义
可以让父类对象,初始化子类对象
Parent p3 = c1;
三 继承中的对象模型
问题:如何初始化父类成员?父类与子类的构造函数有什么关系
在子类对象构造时,需要调用父类构造函数对其继承得来的成员进行初始化
在子类对象析构时,需要调用父类析构函数对其继承得来的成员进行清理
继承中的构造析构调用原则(初始化的时候从上而下,先有爹再有儿子)
1、子类对象在创建时会首先调用父类的构造函数
2、父类构造函数执行结束后,执行子类的构造函数
3、当父类的构造函数有参数时,需要在子类的初始化列表中显示调用
4、析构函数调用的先后顺序与构造函数相反
- C++复习要点总结之八——继承一
- c++复习要点总结之九——继承二
- java继承复习要点总结
- C++复习要点总结之十——多态(一)
- C++复习要点总结之二——函数
- c++复习要点总结之三 ——构造函数
- C++复习要点总结之——友元
- C++复习要点总结(一)
- C++复习要点总结之六——编译器对属性和方法的处理机制
- c++复习要点总结之七——运算符重载
- c++复习要点总结z之十二——STL string
- C语言要点总结(一)
- C++复习要点总结十一——多态(二)
- C总结复习(一)
- 复习一:C的OOP-基本继承
- 操作系统复习要点总结
- 复习C要点
- C语言复习要点
- JAVA利用HttpClient进行POST请求(HTTPS)
- C++ typedef的用法
- FastJSON 常用操作
- 随笔面试题
- 第三周 项目4(7)辩数字
- C++复习要点总结之八——继承一
- 数据结构 用单链表表示集合的并交差运算
- 第五周上机实践项目1(5):三角形类雏形
- 关于Android中对图片进行模糊处理的方法
- 数据类型
- Git 补充
- 3-29博客
- ESXi安装过程截图
- 在CentOS上使用yum安装Java环境