继承和组合
- 继承是一种 is- a 的关系, 组合是一种 has-a 的关系
- public继承就是一种 is-a 的关系。 也就是说每一个派生类对象都是一个基类的对象
- Date和Time就是一种组合 has-a 的关系, Date组合了Time, 每一个Date对象中都有一个Time对象
对于继承的分析:
在继承方式中, 基类的内部细节对子类可见。而且基类的改变,对派生类的影响很大,派生类和基类间的依赖关系很强,耦合度很高
对于组合的分析:
对象组合是继承之外的另一种复用的选择。因为对象的内部细节是不可见的。组合类之间没有很强的依赖关系,耦合度很低。优先使用对象组合可以保持每个类被更好的封装
继承的样例:
class Time
{
};
class Date : public Time