Bha*_*odi 9 java program-entry-point
好的只是为了清酒知识,我尝试了下面的案例(假设A类和B类在同一个包中)
ClassA的
public class ClassA {
public static void main(String[] args) {
System.out.println("A");
}
}
Run Code Online (Sandbox Code Playgroud)
ClassB的
public class ClassB extends ClassA {
public static void main(String[] args) {
System.out.println("B");
}
}
Run Code Online (Sandbox Code Playgroud)
在ClassB它上面执行它将B在classB下面的变化之后产生现在的输出
ClassB的
public class ClassB extends ClassA {
//blank body
}
Run Code Online (Sandbox Code Playgroud)
如果我编译并运行terminal它给我的输出A完全令人惊讶,因为它应该给出,NoSuchMethodError因为没有主要的方法是他们如此善意地解释奇怪的行为?
注意:许多答案包含Override单词请使用,hiding因为我们无法覆盖java中的静态方法.
在第一种情况下,你隐藏了这个main方法,因为你在子类中定义了一个新方法,在第二种情况下,你不是你固有A的主要方法.
请参阅The Java™Tutorials - Overriding and Hiding:
如果子类定义了
static具有相同签名的方法static在该方法中的超类,那么在该方法的子类 隐藏所述一个在超类.