前言:对于public(公用)、private(私有)、protected(被保护)继承方式,在我认为熟知后面我所列的表格中的关系即可。
一、访问属性:
公用继承(public inheritance)
基类的公有成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有。
私有继承(private inheritance)
基类的公有成员和保护成员在派生类中为私有属性,私有成员仍未基类私有。
受保护的继承(protected inheritance)
基类的公有成员和保护成员在派生类中成了保护成员,其私有成员仍为基类私有。
在基类的访问属性 | 继承方式 | 在派生类中的访问属性 |
private | public | 不可访问 |
private | private | 不可访问 |
private | protected | 不可访问 |
public | public | public |
public | private | private |
public | protected | protected |
protected | public | protected |
protected | private | private |
protected | protected | protected |
总结:
基类访问属性为私有不管继承方式是什么在派生类中都不可访问。
基类访问属性为公有派生类跟随继承方式,基类访问为被保护除了继承方式为公有保持不变为被保护的,其他的也跟随继承方式。
注意:
保护基类的所有成员在派生类中都被保护起来,类外不能访问其公用成员和保护成员可以被其派生类成员函数访问,私有成员则都不可以。
派生类中访问属性 | 在派生类中 | 在派生类外部 | 在下层公用派生类中 |
公用 | 可以 | 可以 | 可以 |
保护 | 可以 | 不可以 | 可以 |
私有 | 可以 | 不可以 | 不可以 |
不可访问 | 不可以 | 不可以 | 不可以 |