C++ public private protected三种继承区别

来源:互联网 发布:德国电子地图软件 编辑:程序博客网 时间:2024/04/28 16:57

1. 公有继承

当类的继承方式为公有继承时,基类的公有和保护成员的访问属性在派生类中保持不变,而基类的私有成员不可访问。

即基类的公有成员和保护成员被继承到派生类中仍作为派生类的公有和保护成员,派生类的其他成员可以直接访问它们;

其他外部使用者只能通过派生类的对象访问继承来的公有成员;

而无论派生类的成员还是对象都无法访问基类的私有成员。

2. 私有继承

当类的继承方式为私有继承时,基类的公有和保护成员都以私有成员身份出现在派生类中,而基类的私有成员在派生类中不可访问。

即基类的公有成员和保护成员被继承到派生类中作为派生类的私有成员,派生类的其他成员可以直接访问它们;

但是在类外部通过派生类的对象无法访问;

而无论派生类的成员还是对象都无法访问基类的私有成员。

若果再进一步派生的话,基类的全部成员就无法在新的派生类中直接被访问。因此,私有继承之后,基类的成员再也无法在以后的派生类中发挥作用了,实际就等价与终止了基类功能继续派生,出于这种原因,一般情况下私有继承很少用。

3. 保护继承

当类的继承方式为保护继承时,基类的公有和保护成员都以保护成员身份出现在派生类中,而基类的私有成员在派生类中不可访问。

即基类的公有成员和保护成员被继承到派生类中作为派生类的保护成员,派生类的其他成员可以直接访问它们;

但是在类外部通过派生类的对象无法访问;

而无论派生类的成员还是对象都无法访问基类的私有成员。

比较保护继承和私有继承,可以看出实际上在直接派生类中,所有成员的访问属性都是完全相同的。但是,如果派生类继续作为新的基类,继续派生时,二者区别就出现了。在新的派生类中基类成员作为保护成员或私有成员,依然可以在新类中访问。这里,很好的体现了proteected继承的优点。

既能实现成员隐藏,又能方便继承,实现代码的高效重用和扩充。

 

无论哪种继承方式,基类的公有和保护成员都可以被派生类的成员访问。

无论哪种继承方式,基类的私有成员都不可以被派生类的成员和对象访问。

只有公有继承时,基类的公有成员才可以被派生类的对象访问。

在被继承时,基类的保护成员及和公有成员行为一致。

在被类的对象访问时,保护成员和私有成员的行为一致。

 

原创粉丝点击