覆盖主方法

时间:2012-01-31 17:15:19

标签: java

我们可以覆盖下面提到的方法: -

public static void main

7 个答案:

答案 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)

MAIN是一种类方法(根据定义,因为它的static)。因此,“覆盖”它(或者就任何静态方法而言)是没有意义的。

“覆盖”的概念仅适用于方法。

对于同样的事情,

This是一个很好的阅读。

答案 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");

    }

}