《EffectiveJava》读后感(第4章类和接口 第17条)

要么为继承而设计,并提供文档说明,要么就禁止继承

首先该文档必须精确的描述覆盖每个方法所带来的影响。该类必须有文档说明它可覆盖的方法的自用型。

关于文档的格言:好的API文档应该描述一个给定的方法做了说明工作,而不是描述它是如何做的。为了继承而进行的设计不仅仅设计自用模式的文档设计。为了使程序员能够编写出更加有效的子类,而无需承受不必要的痛苦,类必须通过某种形式提供适当的勾子(hook),以便能够进入到它的内部工作流程中,这种形式是可以精心选择的受保护的方法。

对于为了继承而设计的类,唯一的测试方法就是编写子类。而对发布类进行编写子类进行测试时非常必要的。通常需要通过3个子类的编写去测试一个可扩展的
类。

为了允许继承,构造器绝不能调用可覆盖的方法,无论时直接调用还是间接调用。如果违反,可能会导致程序失败。clone和readObject在功能上非常类似域构造器,所以不许不能调用可覆盖的方法。到现在为止,为了继承而设计的类,对这个类会有一些实质性的限制。对于普通类(既不是为继承而设计,也不是final的),最佳的解决方案时对于那些并非为了安全的进行子类化而设计和编写文档的类,要禁止实例化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值