为继承设计类并提供文档说明,不然就禁止继承(17)

一、类必须有文档说明类可覆盖方法的自用性安全

  • 可覆盖方法指,非final 的 公有和受保护方法

二、好的API 文档应该描述作了什么工做,而不是怎么作的ide

三、为继承而设计的类函数

  • 类必须以某种形式提供适当的钩子,以便能进入到他的工做流程中
  • 能够是受保护的方法或受保护的域(比较少见)

四、尽量少的暴露受保护的域测试

  • 每一个受保护的方法或域都表明了一个实现细节
  • 不能漏掉该暴露的成员,而致使类不能被真正继承

五、对于为继承而设计的类,惟一的测试方法就是编写子类设计

  • 若是多个子类无一使用受保护域,就该变成私有

六、为了继承而设计的类可能获得普遍应用对象

  • 受保护方法和域所隐含的实现策略,文档中说明的自用模式,是不能修改的永久承诺

七、为了容许继承,类须要遵照的约束继承

  • 构造器决不能调用可被覆盖的方法(不管直接调用、间接调用)

  • 在子类中对final 域赋值

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

八、为了继承而设计的类,实现Cloneable 和Serializable 哪一个接口都很差接口

  • clone 和 readObject 方法行为上很是像构造方法,所以不要使用可覆盖方法
  • 上述可覆盖方法 均可能在对象构造前被调用

九、对于并不是为了安全的子类化的类,禁止子类化文档

  • 类设置为 final
  • 构造器设置为 private 或包级私有,增长公有静态工厂替代构造器
  • 若是类实现了反应其本质的接口,禁止子类是值得的
  • 包装类也可进行扩展,继承不是惟一路径
  • 若是非要继承,合理的办法是:永远不要调用它的任何可覆盖方法

十、能够讲可覆盖方法的代码放到私有辅助方法中,在可覆盖方法中调用私有辅助方法工作流

  • 灵活
相关文章
相关标签/搜索