1、实现代码复用的有力手段,但并非永远是完成这项工作的最佳工具
2、对于专门为了继承而设计的类、具有好的文档,使用继承是非常安全的
- 普通类挎包继承是很危险的
- 本条目不适用于接口
3、与方法调用不同,继承打破了封装性
4、子类脆弱的原因:超类在后续版本中获得新的方法
5、在新的类中添加一个私有域,引用现有类的一个实例
- 这种方法叫组合(复合)
- 新类中的所有方法都可以调用该实例,并返回他的方法:即转发
- 新类中的这种方法叫转发方法
- 这样得到的类非常稳固,不依赖现有类的实现细节
6、包装类没什么缺点,但不适合回调框架
- 包装类在转发方法调用的性能上和内存占用上都不会有很大的影响
- 包装类不仅比子类更加健壮,功能更加强大
7、只有子类真正是超类的子类型时,才适合用继承
- 只有两者是“is-a” 的关系时
8、组合本质上,A仅仅是B的实现细节
- 在该使用复合的地方使用继承,会暴露过多实现细节
- 客户端访问会导致语义混淆
9、如果你正在扩展的类有缺陷
- 继承使得超类所有缺陷扩展到子类中
- 复合允许设计心得API 来隐藏这些缺陷