【发布时间】:2021-11-30 11:06:26
【问题描述】:
Java类的main方法实现为:
public static void main(String[] args){
// main method
}
为什么不实现为public static final void?我们可以在方法声明中使用 final 关键字来指示该方法不能被子类覆盖,这似乎是类主方法的理想属性?
也许是因为“because a static method cannot be overridden”,所以最后的关键字是多余的,但我很好奇是否还有其他需要注意的原因。
【问题讨论】:
-
final对于方法而不是字段意味着什么? Java 不是 Javascript,您不只是在运行时将新的方法签名和主体分配给现有的类方法名称(如果您想打破,您需要跳过 很多 圈期望很差)。至于防止子类中的覆盖:为什么有必要这样做?只有Java“开始运行”的类的主要方法被调用。您可以拥有一百万个子类,每个子类都有自己的主类,它们的影响为零? -
除了
static基本上已经是final之外,还有什么理由需要? -
如果 Java 要求您将 main 方法编写为
public static final void方法,它将获得什么?请注意,尽管 Java 不要求您将主要方法编写为public static final void main(..),但如果您愿意,您仍然可以这样编写它们。
标签: java