私有继承
2014-04-22 10:36
183 查看
C++编程语言中,在声明一个派生类时将基类的继承方式指定为private的称为私有继承,用私有继承方式建立的派生类称为私有派生类(private derived class),其基类称为私有基类(private base class)。如果两个类之间的继承关系为私有或者保护,编译器一般不会将派生类对象转换成基类对象。从私有基类继承而来的成员成为派生类的私有成员,即使它们在基类中是保护或公有成员。私有基类的公用成员和保护成员在私有派生类中的访问属性相当于派生类中的私有成员,即派生类的成员函数能访问它们,而在派生类外不能访问它们。私有基类的私有成员在派生类中称为不可访问的成员,只有基类的成员函数可以引用它们,一个基类成员在基类中的访问属性和在私有派生类中的访问属性可能是不相同的。私有基类的成员在私有派生类中的访问属性见下表:
私有继承和组合的相同点和不同点是什么?如何在两者之间作出选择?
使用组合表示 "(has a)" (即有一个) 的关系。如果在组合中需要使用对象的某些方法,则完全可以利用私有继承代替。
私有继承使派生类获得基类的一份备份,同时可以访问基类的公共以及保护接口以及重写基类虚函数。它意味着 " Is Implement In Terms Of "(即以...实现),它是组合语法上的一种变形(即聚合或者" 有一个")。
答案: 相同点是都是表示" has a" 关系。 不同点是私有继承中派生类可以访问基类的保护、公有成员,并且可以重写基类的虚函数(甚至当基类是抽象类时),组合不具有这些功能。 选择它们的原则为尽可能使用组合,万不得已时使用私有继承。
私有基类中的成员 | 在私有派生类中的访问属性 |
私有成员 | 不可访问 |
公有成员 | 私有 |
保护成员 | 私有 |
使用组合表示 "(has a)" (即有一个) 的关系。如果在组合中需要使用对象的某些方法,则完全可以利用私有继承代替。
私有继承使派生类获得基类的一份备份,同时可以访问基类的公共以及保护接口以及重写基类虚函数。它意味着 " Is Implement In Terms Of "(即以...实现),它是组合语法上的一种变形(即聚合或者" 有一个")。
答案: 相同点是都是表示" has a" 关系。 不同点是私有继承中派生类可以访问基类的保护、公有成员,并且可以重写基类的虚函数(甚至当基类是抽象类时),组合不具有这些功能。 选择它们的原则为尽可能使用组合,万不得已时使用私有继承。
相关文章推荐
- 子类会继承父类的私有方法和私有属性,只是不能直接访问
- 继承父类私有成员是否可以修改
- C++公有,私有,保护继承
- C++ 公有继承、保护继承和私有继承中类成员的访问权限的控制
- C/C++ 公有继承、保护继承和私有继承的区别
- C++继承、公有,私有,保护
- 《java编程思想》之控制对成员的访问权限的原因、final、继承和组合、私有方法的“覆盖”
- 共有继承,保护继承,私有继承的区别c++代码实例
- C/C++--私有继承
- 私有变量不可以继承吗?
- C++ 私有、保护、公有继承
- 在继承中,父类的私有也会被继承,但是子类不可以直接访问,但是可以间接的访问
- C++继承:公有,私有,保护
- 公有继承、私有继承、保护继承的测试
- C++ 保护,私有继承,公有继承 ---访问属性--关系
- 私有继承
- Java 拾遗补阙 ----- 继承私有属性
- C++继承和共有、私有、保护继承
- 私有继承成员公有化
- C++继承:公有,私有,保护