《写给大家看的面向对象编程书》总结&&实践(7)

掌握继承和组合

继承和组合都是实现重用的机制。

  • 继承(inheritance)是指从其他类继承属性和行为。
  • 组合(subclass)是指使用其他对象来构建对象。

重用对象

最根本的是,继承和组合都是构建OO系统的重要技术。只是设计人员和开发人员需要花时间来了解这两种技术的优点和缺点,并在合适的情况下正确加以使用。

继承

一般化与特殊化

其思想是,逐步向下建立继承树时对象会越来越具体。

设计决策

设计时要保证更低的复杂性还是提供更多的功能?

组合

如果某个对象由其他对象组成,而这些对象作为字段包含在内,在这个新对象就称为复合对象(compound object)、聚合对象(aggregate object)或组合对象(composite object)

一个很经典的机车的例子:

为什么封装在OO中如此重要

继承如何削弱封装

问题在于,如果从一个父类继承一个实现,然后修改这个实现,那么父类的修改会对整个类层次结构产生涟漪作用。这种涟漪效应可能会影响所有的子类。

严格设计好继承关系是解决这个问题的方法。

多态的一个详细例子

多态的字面含义是多种形状,将一条消息发送给一个对象时,这个对象必须定义相应的方法对这个消息做出响应。

对象职责

小结

组合在大多数情况下都比继承更适用,不过这不并不意味着继承一无是处,组合和继承都可以使用,但只应该在其适当的上下文中使用。