一 不同的继承方式会改变继承成员的访问属性
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++复习要点总结之八——继承一的内容,更多相关内容请关注PHP中文网(www.php.cn)!