本问题已经有最佳答案,请猛点这里访问。
众所周知,我们无法在Java中继承最终类,但我想知道为什么Java不允许这样做? 背后的原因是什么?
final关键字还有什么用?
@Ferrybig我相信问题是"为什么有人会永远禁止继承",而不是"为什么最终不允许继承"。
由于创建了final关键字,因此该类不能反过来扩展。
final的具体含义是"不要继承我"(在此上下文中,它在不同的上下文中具有其他含义)。
开发人员将类标记为最终的原因主要是优化。他们要么可以保证某些变量将特别属于某个类,而且JIT可以利用这一点,因为它可以避免更昂贵的虚拟调用,而直接内联方法。
因为那是final关键字的目标,即使该类不被继承。您可以阅读这篇文章:
Benefits of final keyword in Java
Here are few benefits or advantage of using final keyword in Java:
Final keyword improves performance. Not just JVM can cache final variable but also application can cache frequently use final
variables.
Final variables are safe to share in multi-threading environment without additional synchronization overhead.
Final keyword allows JVM to optimized method, variable or class.
谢谢 ! 现在我有了关于final关键字的想法。
许多OOP语言都具有此功能,例如C#使用"密封"来完成同一件事。除了前面提到的编译器优化之外,对(例如)类库的使用者实施某些约束也是有用的,在这种约束中,不希望允许客户端代码覆盖库功能的某些方面以保护或保护知识分子。财产原因。
是啊。 谢谢先生
我认为这是一个合理的要求。当然,子类不能覆盖final超级类的任何行为。但是子类可以添加自己的独立状态和行为。也就是说,我们可以削弱final class的语义,以表示所有方法都是final,但是该类仍然可以被子类化。在某些情况下,此功能可能会变得有用。