java中的静态方法可以调用非静态方法

时间:2014-04-19 20:13:14

标签: java static

在java中我们说不能从静态方法调用非静态方法。这究竟是什么意思?我们总是可以使用对象调用非静态方法frm静态方法,但是...'请解释< / p>

2 个答案:

答案 0 :(得分:1)

这是一个很好的代码片来说明它的含义:

class MyClass{

    static void func1(){
        func2(); //This will be an error
    }

    void func2(){
        System.out.println("Hello World!");
    }

}

答案 1 :(得分:0)

要调用非静态方法,您需要一个实例(对象) - 因为这些方法属于一个实例,并且通常只在实例的上下文中有意义。

静态方法不属于某个实例 - 它们属于该类。因此,无需先创建实例,只需调用MyClass.doSomething()

即可
void foo(){
  MyClass.doSomething();
}

但是,如果首先创建实例,您可以从静态方法调用非静态方法。

static void bar(){
  MyObject o = new MyObject();
  o.doSomething();
}