-
Notifications
You must be signed in to change notification settings - Fork 0
/
Inheritance
68 lines (49 loc) · 3.06 KB
/
Inheritance
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
继承可以理解成一个类从另一个类获取变量和成员函数的过程。被继承的类称为父类和基类,继承的类称为子类或者派生类
派生类除了拥有基类的成员,还可以定义自己的新成员,以增强类的功能。
以下是典型的类的使用继承的场景:
1、当你创建新类与现有类相似,只是出现若干成员变量或者成员函数时,可以使用继承,这样不但会减少代码量,
而且新类会拥有基类的所有功能。
2、当你需要创建多个类,他们拥有很多相似的成员变量或者成员函数时,可以使用继承,这样不但会减少代码量,而且
新类会有基类的所有功能。
class 派生类名:[继承方式] 基类名{派生类新增加的成员};
public、protected、private修饰类的成员
类成员的权限由高依次为public->protected->private;
其中protect。protect成员和private成员类似,不能通过对象访问。但是存在继承关系时,protected和Private就不一样了;
基类中的protected成员可以在派生类中使用,而基类中的private成员不能在派生类中使用。
不同的继承方式会影响基类成员在派生类中的访问权限。
1)public继承方式
基类中所有public成员在派生类中为public属性;
基类中所有proteced成员在派生类中为protected属性;
基类中所有private成员在派生类中不能使用。
2)protected继承方式
基类中所有的public成员在派生类中为protected属性;
基类中所有的protected成员在派生类中为protected属性;
基类中的所有private成员在派生类中不能使用
3)private继承方式
基类中的所有public成员在派生类中均为private属性;
基类中的所有protected成员在派生类中均为private属性;
基类中的所有private成员在派生类中不能使用。
通过上面的分析可以发现:
1)基类成员在派生类中的访问权限不得高于继承方式中指定的权限。例如,当继承方式为protect时,那么基类成员在派生类中的访问权限
最高也为protected,高于protected的会降级为protected,但是低于protected不会升级,再如继承方式public时,那么基类成员在派生类中的访问权限会保持不变
也就是说,继承方式的public、protected private是用来知名基类成员在派生类中的最高访问权限的。
2)不管继承方式如何,基类中的private成员在派生类中始终不能使用
3)如果希望基类的成员能够被派生类继承并且毫无障碍的使用,那么这些成员只能声明为public或者protected;只有那些不希望在
派生类中使用的成员才设置成private.
改变访问权限
使用using关键字可以改变基类成员在派生类中的访问权限,例如将public改名为private、将protected改为public
实例:
#include<iostream>
using namespace std;
//基类people
class People{
public:
void show();
protected:
char *m_name;
int m_age;
};
void People::show()
{
cout<<m_name<<
}