【发布时间】:2014-12-29 21:52:32
【问题描述】:
我在一次认证考试中看到了这段代码:
public class SimpleClass
{
int num;
final static void main(final String args[])
{
String s1="new";
String s2="String";
String s3="Creation";
System.out.println(s1+s2+s3);
}
}
我知道最终方法是无法覆盖的。我也知道,如果main 方法的通常签名被更改,它将被JVM 视为任何其他普通方法,而不是main()。
但是,给我的选项是:
1> Code won't compile
2> Code will throw an exception
3> will print newStringCreation.
无法在 Eclipse IDE 上运行此程序。谁能解释一下答案应该是什么以及为什么?
好吧,让我这样提出我的问题 - 当我执行我的程序时,会发生什么?我应该选择以上 3 个选项中的哪一个?
【问题讨论】:
-
讨厌的问题。
final应该没关系。但是main也不是公开的,这让我很担心。 -
是的,代码会编译,只是不会运行。
-
好吧,定义“运行”;如果这意味着您使用
java SimpleClass启动它,那么它将引发异常,因为正如您自己提到的那样,实际上没有main()可以运行。此外,您不能以任何方式、形状或形式覆盖static方法,因此将它们声明为final是多余的。 -
@fge 声明静态方法 IS NOT 是多余的。如果您没有在超类中将静态方法声明为 final,您可以在子类中隐藏静态方法。
-
您是否尝试自己编译和运行它? “无法在 Eclipse IDE 上运行此程序”是什么意思?当你尝试时会发生什么?您是否尝试在命令行上运行它?