一、类必须有文档说明类可覆盖方法的自用性安全
二、好的API 文档应该描述作了什么工做,而不是怎么作的ide
三、为继承而设计的类函数
- 类必须以某种形式提供适当的钩子,以便能进入到他的工做流程中
- 能够是受保护的方法或受保护的域(比较少见)
四、尽量少的暴露受保护的域测试
- 每一个受保护的方法或域都表明了一个实现细节
- 不能漏掉该暴露的成员,而致使类不能被真正继承
五、对于为继承而设计的类,惟一的测试方法就是编写子类设计
六、为了继承而设计的类可能获得普遍应用对象
- 受保护方法和域所隐含的实现策略,文档中说明的自用模式,是不能修改的永久承诺
七、为了容许继承,类须要遵照的约束继承
- 构造器决不能调用可被覆盖的方法(不管直接调用、间接调用)


- 执行结果
- 说明这里执行父类构造函数时,已经调用的子类overrideMe 方法

八、为了继承而设计的类,实现Cloneable 和Serializable 哪一个接口都很差接口
- clone 和 readObject 方法行为上很是像构造方法,所以不要使用可覆盖方法
- 上述可覆盖方法 均可能在对象构造前被调用
九、对于并不是为了安全的子类化的类,禁止子类化文档
- 类设置为 final
- 构造器设置为 private 或包级私有,增长公有静态工厂替代构造器
- 若是类实现了反应其本质的接口,禁止子类是值得的
- 包装类也可进行扩展,继承不是惟一路径
- 若是非要继承,合理的办法是:永远不要调用它的任何可覆盖方法
十、能够讲可覆盖方法的代码放到私有辅助方法中,在可覆盖方法中调用私有辅助方法工作流