在Java中将私有方法声明为"final"是否有优势?
如果我的理解是正确的,"最终"修饰符确保我不能覆盖子类中的方法,因此这可以使该方法在运行时更有效.一些文献说,如果它是最终的,可以内联,例如可以使方法调用更快.此外,如果声明为final,则Java运行库不必在继承层次结构中查找其他方法.
但是,私有函数不能被覆盖,所以它们也暗含"最终"吗?以下两个声明之间是否有区别:
private void myFun()
Run Code Online (Sandbox Code Playgroud)
和
private final void myFun();
Run Code Online (Sandbox Code Playgroud)
子类不能private按设计覆盖方法.此外,final关键字告诉编译器,无论其访问级别如何,子类都不能覆盖方法.
由于private已经暗示子类可能不会覆盖方法,因此声明私有方法final是多余的.发表声明不会引起问题,但也不会有任何成就,因为私有自动被认为是最终的.
所有编译器都将private方法视为final.编译器不允许private覆盖任何方法.同样,所有编译器都会阻止子类重写final方法.
更新
在你的问题中,你说的是
"final"修饰符确保我不能覆盖子类中的方法,因此在运行时使此方法更有效
这是一个值得怀疑的陈述.如果声明private方法final,则优化将取决于您使用的编译器及其设置.这意味着没有.不,这未必是真实的,如果你申报你的方法private和final,或只是final,它会跑得更快.
| 归档时间: |
|
| 查看次数: |
982 次 |
| 最近记录: |