在java中我们说不能从静态方法调用非静态方法。这究竟是什么意思?我们总是可以使用对象调用非静态方法frm静态方法,但是...'请解释< / p>
答案 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();
}