Java 为什么CheckStyle建议我使用final方法?

Java 为什么CheckStyle建议我使用final方法?,java,final,checkstyle,Java,Final,Checkstyle,我正在使用eclipse checkstyle插件。我在类a中有几个方法在类B中被重写。对于大多数方法,我有以下警告 功能SearchAndReplace不被认为是继承的 -它必须声明为抽象的或最终的,或者保留为空 将方法声明为final有什么好处吗 编辑 我知道关键字final是什么意思。我知道它可以防止方法重写,还有其他的优点吗,比如性能之类的 在Java中,final关键字应用于各种上下文: final关键字是修饰符,表示不能扩展final类,不能修改变量,也不能重写方法 当您将一个方法声

我正在使用eclipse checkstyle插件。我在类a中有几个方法在类B中被重写。对于大多数方法,我有以下警告

功能
SearchAndReplace
不被认为是继承的
-它必须声明为抽象的或最终的,或者保留为空

将方法声明为final有什么好处吗

编辑

我知道关键字final是什么意思。我知道它可以防止方法重写,还有其他的优点吗,比如性能之类的

在Java中,final关键字应用于各种上下文:

final关键字是修饰符,表示不能扩展final类,不能修改变量,也不能重写方法


当您将一个方法声明为final时,您的意思是该方法可能不会被重写

引用Java语言规范:

方法可以声明为final,以防止子类重写或隐藏它

试图重写或隐藏最终方法是编译时错误

常见的口号(我相信是约书亚·布洛赫写的)是

“用于继承的设计和文档,否则禁止继承”


因此,除非您打算让子类重写该方法(并可能更改超类的行为(所有方法都在Java中)),否则请将该方法设置为final。

A
final
方法保证没有子类重写该方法。运行时很可能会利用这一点获得性能提升(这可能很小)


使方法成为final方法的主要原因是停止继承者重写该方法。这可能是一个重要的考虑因素(例如,想象一个名为
bool checkSecurity()
-让其他人覆盖这一点是不好的!)

当一个方法被声明为final时,在构造函数中调用它是安全的(除非在构造函数中调用了其他非final方法)。如果不是final,子类可以通过尝试访问子类中引入的字段的方式重写它。而这往往不是你所期望的。
我认为当您为移动设备编写代码时,会有一些性能方面的好处,但我在这方面不是专家。

最终的方法不能被覆盖!我很想知道这个插件是如何知道这个方法的。