【问题标题】:Why aren't Java Class main methods implemented as final? [duplicate]为什么 Java 类的主要方法没有实现为最终方法? [复制]
【发布时间】: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


【解决方案1】:

我相信您已经回答了自己的问题。 final 关键字防止方法被覆盖。由于static 方法不能被覆盖,所以将main 方法设为final 是多余的。

【讨论】:

  • 听起来这些关键字对变量的操作不同,因为private static final是Java中常用的声明常量?
  • 静态变量可以改变它们的值。 public static final 变化意味着,这些值就像常数,final 防止更改它们。这不同于声明方法final
  • final 关键字对变量的作用不同。 final 变量的值无法更改。
猜你喜欢
  • 2023-03-27
  • 2015-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-24
  • 1970-01-01
  • 2016-09-22
相关资源
最近更新 更多