【发布时间】:2019-09-12 03:35:25
【问题描述】:
我的问题和this的问题基本一样,但这是否也适用于static函数?
我想了解:
- 编译器是否将
final类中的所有static函数视为final? - 在
final类中将final关键字添加到static函数有任何效果吗?
【问题讨论】:
-
在最终类中声明的任何非最终方法,无论这些方法是否是静态的,都隐含地是最终的,因为永远不会有一个子类可以声明任何潜在的隐藏或覆盖方法。但是,final 类的非 final 方法没有添加 final 修饰符;换句话说,您可以通过反射查询这些方法的修饰符,它们不会是最终的。这与例如接口的行为不同,其中方法声明可以省略 public 修饰符,但这些方法实际上仍然是公共的。
-
@Slaw 感谢您的详细评论。实际上这应该是公认的答案。
-
这能回答你的问题吗? Behaviour of final static method
-
@LiveandLetLive 感谢您链接问题。但是,我原则上知道
final、static、方法的覆盖和静态函数的隐藏是什么意思。问题更像是:“在静态函数的情况下,final关键字还有什么作用,除了防止隐藏它?”。答案似乎是“不”。但是,如果答案是“是”,那么在已经final类中创建静态函数final实际上会有所不同。
标签: java function class static final