在语句中使用“new”调用Java方法意味着什么?

时间:2009-10-30 00:53:58

标签: java

说,我有一个这样的代码片段:

  public static void main(String[] args) {
        new Main().myFunction();
    }

其中myFunction是与Main在同一个类中定义的另一个方法(可以是非静态的)。你为什么要这样做?为什么不这样做:myFunction();

6 个答案:

答案 0 :(得分:5)

myFunction是属于Main类型的实例方法。您的代码所做的是首先创建一个类型为Main的新实例(即new Main()),然后在该实例上调用方法myFunction

您的代码的更详细版本将是:

Main mainObj = new Main();
mainObj.myFunction();

答案 1 :(得分:1)

很可能myFunction是实例方法而不是类(静态)方法,因此必须在类的实例上调用。由于你在静态方法中,你不能直接调用实例方法,你必须首先创建一个new Main()所做的实例,然后你可以调用它。

答案 2 :(得分:1)

  

在语句中使用“new”调用Java方法意味着什么?

它创建给定类

的新实例
  

为什么不这样做:myFunction();

最有可能myFunction()是一个实例方法:

public void myFunction() { 
    ....
}

要调用实例方法,您需要一个第一个实例。

使用new关键字创建一个新对象,然后调用该对象上的myFunction方法。

使用static访问修饰符标记的方法是方法,它们属于整个类,不需要实例就可以工作。

未标记为static的方法确实需要一个实例才能工作。

这就是编译器错误:

  

...无法从静态上下文中调用非静态方法... 1

就是这样。

1 或类似

答案 3 :(得分:0)

嗯,“Main”是一个类,'main'是一个方法,所以它们不是同一个东西。如果你想创建一个“Main”类的新实例并调用myFunction方法,你可以像你的例子所示那样做。现在,如果“主要”是“主要”的方法......那么我不能说为什么你实际上会做这样的事情。

答案 4 :(得分:0)

new Main().myFunction();

这将创建Main类的新实例,然后在其上调用myFunction()方法。

答案 5 :(得分:0)

因为myFunction()是非静态的,所以你需要一个Main类的实例来调用它。

new Main()。myFunction();

可以细分为

new Main()//首先实例化,然后才实例化 .myFunction()