不同的继承方式的影响主要体现在:
- 在派生类内部,派生类里的非基类成员怎么去访问从基类继承过来的成员?
- 在派生类外部(派生类的对象),怎么去访问从基类继承过来的成员?
不同的继承方式:
-
public继承:基类public成员,protected成员,private成员的访问属性在派生类中分别变成:
public(类内:可访问(直接访问);类外:可访问(直接访问)),protected(类内:可访问(直接访问);类外:可访问(间接访问)),private(类内:可访问(间接访问);类外:可访问(间接的间接访问))
-
protected继承:基类public成员,protected成员,private成员的访问属性在派生类中分别变成:
protected(类内:可访问(直接访问);类外:可访问(间接访问)),protected(类内:可访问(直接访问);类外:可访问(间接访问)),private(类内:可访问(间接访问);类外:可访问(间接的间接访问))
-
private继承:基类public成员,protected成员,private成员的访问属性在派生类中分别变成:
private(类内:可访问(直接访问);类外:可访问(间接访问)),private(类内:可访问(直接访问);类外:可访问(间接访问)),private(类内:可访问(间接访问);类外:可访问(间接的间接访问))
-
注:
间接访问:例如基类中定义共有函数A,A可以调用基类的私有成员;在派生类中定义公有函数B,用来调用A,那么就达到了派生类间接访问基类私有成员的目的。
间接的间接访问:接上,定义派生类的对象c,c.B这种形式就达到了派生类外间接的间接访问基类私有成员的目的。
总结
- protected继承和private继承一毛一样!
- protected成员和private成员有且仅有一个不同:
派生类可直接调用基类的protected成员(无论哪种继承方式),不能直接调用基类的private成员(无论哪种继承方式)。
参考文献
[1] https://www.jb51.net/article/54224.htm