我正在用Java开发Android中的SDK,通常用户不需要继承SDK的任何类,所以问题是,在默认情况下,在SDK类中将所有类作为最终类是否是一个良好的实践?
发布于 2019-10-10 15:22:41
通常,除非您专门将类设计为可继承,否则最好将它们标记为final。
原因如下:你无法预测别人会如何使用你的课程。如果允许继承,客户端可能会以意想不到的方式使用它们(或破坏它们)。如果没有专门设计要继承的类,则在更新类时可能会破坏它们的代码。
将类保持未密封意味着继承该类的人有权访问其内部。实际上,这些内部组件成为您的公共API的一部分。因此,如果您想要控制您的API表面,类必须是final。
Eric提供了主题这里的详细处理。
发布于 2019-10-10 15:59:28
如果另一个开发人员可以将您的类从final更改为非决赛,那么将其标记为final并不意味着“不能被子类化”,这意味着“我没有给出它是否可以或应该被子类化的问题”,如果您对它进行子类化,那么它完全是您的责任“。
如果是这样的话,那就做最后的决定。
如果其他开发人员无法修改您的类,那么final将阻止子类的生成。只有当子类必须被阻止时,才使它成为最终的。
https://softwareengineering.stackexchange.com/questions/399552
复制相似问题