我最近被告知面向对象编程的一个很好的做法,你应该总是允许从类中继承.我真的不这么认为,但我没有坚定的论据.
阻止继承的真实示例:
final
类修饰符,适用于许多标准组件,如java.lang.String
.我认为可能的原因是:
所以我的问题是:在什么情况下我应该故意阻止继承?
事实上,我尝试遵循的做法,以及 Josh Bloch 在他的《Effective Java》一书中推荐的做法,正是与您被告知的规则相反的规则:除非您考虑过继承,否则将您的类设计为可继承的,并记录了如何必须继承您的类,您应该始终禁用继承。
我建议您阅读《Effective Java》的这一章(您不会后悔购买它),并将其展示给告诉您这条规则的人。
禁止继承的最明显的原因是不变性。不可变对象使用简单(只有一种状态),可以缓存,在许多对象之间共享,并且本质上是线程安全的。如果该类是可继承的,则任何人都可以扩展该类并通过添加可变属性使其可变。
归档时间: |
|
查看次数: |
796 次 |
最近记录: |