java - 我们可以不使用 final 关键字来避免继承吗?

标签 java android final

我只想知道我可以有 2 个类 A 和 B。 我不想让 B 类扩展 A 类。 我应该在 A 类中应用什么技术,这样 B 类就不能继承 A 类。 不想让 A 类最终。除了将 A 类定为 final 之外,还有其他解决方案吗?

最佳答案

事实上,我尝试遵循的做法以及 Josh Bloch 在他的 Effective Java 一书中推荐的做法与您被告知的规则正好相反:除非您考虑过继承,否则请设计您的类要被继承,并记录你的类必须如何被继承,你应该始终禁用继承。

我建议您阅读 Effective Java 的这一章(您不会后悔购买它),并将其展示给告诉您这条规则的人。

禁止继承的最明显原因是不变性。不可变对象(immutable对象)使用简单(只有一种状态),可以缓存,可以在多个对象之间共享,并且本质上是线程安全的。如果该类是可继承的,则任何人都可以扩展该类并通过添加可变属性使其可变。 https://stackoverflow.com/a/10464466/5010396

关于java - 我们可以不使用 final 关键字来避免继承吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52271121/

相关文章:

java - 是否可以通过不抛异常的基类的调用方法抛出java异常?

java - 如何将注册表项保存到文件

java - 如何控制图像的亮度?

java - 私有(private)最终静态属性与私有(private)最终属性

java - 为什么我们允许在 java 中有一个 final main 方法?

java 优先级队列到队列的适配

java - Android - 带有弹出窗口的 NullPointerException

android - 无法在 Android Studio 中重启/连接 ADB : 'the procedure entry point _create_locale could not be located'

android - 使用 Retrofit 时出现内部服务器错误

java - 如何在 Java 的派生类构造函数中分配基类的最终变量?