我们可以覆盖下面提到的方法: -
“public static void main
”
答案 0 :(得分:16)
没有。 main
是一种静态方法,因此不是多态的。您可以隐藏它在子类中定义另一个静态main
方法。
答案 1 :(得分:4)
不,你在这里失去了重点。主要方法有一个目的,并且出于唯一目的在逻辑上声明:
Java中的main方法属于一个类,但不属于Object。创建对象时Java中的main()
是应用程序的起点,无法从特定于实例的方法启动应用程序。这就是为什么static关键字与main方法完全一致。实际上,当您想到'jvm'时,主要方法声明的所有部分都非常有意义,并描绘了主要方法的作用(启动应用程序):
public
,因为jvm必须可以访问此方法(不是由您编写的)。static
,暗示这个方法可以在没有对象的情况下访问(因为它的表示永远不会改变),但是如果你再次像jvm一样思考逻辑很容易理解; “我没有任何对象来创建(实例化)对象,所以我需要一个静态方法来启动应用程序,因为简单的没有任何逻辑方法来获取特定于实例的方法,因为我没有任何东西尚未创建对象“。void
此方法无法在逻辑上返回任何内容,因为还没有任何内容可以返回任何内容。这是应用程序的起点。
main我是主要方法,因为没有我你就没有申请。String[] args
向我发送您认为对我的创业有用的数据。答案 2 :(得分:3)
我们不能覆盖静态方法,因为静态metod是一个类方法,并且该方法的范围在同一个类本身中。因此,如果要强制覆盖,则必须在该类范围之外定义它,这是没有意义的。
答案 3 :(得分:1)
没有。你不能覆盖静态方法。
无论如何都没有意义。由于您不需要该类的实例,因此您不需要多态行为。您只需将所有内容从SomeParent.main()
更改为SomeChild.main()
答案 4 :(得分:0)
答案 5 :(得分:0)
不可以覆盖静态方法,因为它们不是实例级方法,而是类级方法。
答案 6 :(得分:-1)
我试过这个,不知道它是否正确覆盖方法,但是我能够覆盖这样的主方法,
class MainOverride {
public static void main(String[] args) {
MainOverridden mo = new MainOverridden();
String [] s = {"a","b"};
mo.main(s);
}
}
class MainOverridden extends MainOverride {
public static void main(String[] args) {
System.out.println("Main overridden");
}
}