第17条 类与接口——要么为继承而设计,并提供文档说明,要么就禁止继承

        一个专门为了继承而设计并且具有良好文档说明的类,意味着:

       1、该类的文档必须精确地描述了改写每一个方法所带来的影响。该类必须有文档说明其可改写的方法的自用性:对于每一个公有的或受保护的方法或者构造函数,它的文档必须指明它调用了哪些可改写的方法是以什么顺序调用,每个调用的结果是如何影响后续的处理过程的。惯例是如果一个方法调用了可改写的方法,那么在它的文档注释的末尾应该包含关于这些调用的描述信息。

       2、为了使程序员能够编写出更加有效的子类,而无需承受不必要的痛苦,一个类必须通过某种形式提供适当的钩子(hook),以便能够进入到它的内部工作流程中,这样的形式可以是精心选择的受保护方法,也可以是受保护的域,后者少见。

       3、构造函数一定不能调用可改写的方法,无论是直接还是间接进行,因为超类的构造函数在子类的构造函数之前运行。看例子:

publicclass Super{
    //broken-constructor invokes overridablemethod
    public Super(){<span style="font-family: Arial, Helvetica, sans-serif;">   </span>
        m();
    }
    public void m(){};
}
 
finalclass Sub extends Super{
    private final Date date;
    Sub(){
        date=new Date();
    }
    public void m(){
        System.out.println(date);
    }
    public static void main(St
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值