为什么java不允许继承最终类?

时间:2016-02-08 08:15:07

标签: java inheritance final

我们知道,我们不能继承java中的final类,但我想知道为什么java不允许这样做?它背后的原因是什么?

4 个答案:

答案 0 :(得分:4)

final具体表示“不要继承我”(在此上下文中,它在不同的上下文中具有其他含义)。

开发人员将该类标记为final的原因主要是优化。要么它们可以保证某些变量将特定于某个类,并且JIT也可以利用它,因为它可以避免更昂贵的虚拟调用,而是直接内联方法。

答案 1 :(得分:1)

因为这是final关键字的目标,即使该类不被继承。您可以阅读此article

  

Java中最终关键字的好处

     

以下是在Java中使用final关键字的一些好处或优点:

     
      
  1. 最终关键字可提高效果。不仅JVM可以缓存最终变量,而且应用程序可以经常缓存使用final   变量

  2.   
  3. 在没有额外同步开销的情况下,最终变量可以安全地在多线程环境中共享。

  4.   
  5. Final关键字允许JVM优化方法,变量或类。

  6.   

答案 2 :(得分:0)

我认为这是一个合理的要求。当然,子类不应该覆盖final超类的任何行为。但是子类可以添加自己的独立状态和行为。也就是说,我们可以削弱final class语义来表示它的所有方法都是final,但是类仍然可以被子类化。在某些情况下,此功能可能会有用。

答案 3 :(得分:0)

许多OOP语言都有这个功能,例如C#使用“密封”来完成同样的事情。除了前面提到的编译器优化之外,它对于(例如)类库的使用者强制执行某些约束也是有用的,其中不希望允许客户端代码覆盖库功能的某些方面以用于安全性或知识产权的保护。财产原因。