-3

每当我尝试在 main 中调用一个方法时,它都会给我错误

不能从静态上下文中引用非静态方法

我尝试在 main 中创建对象并将它们作为参数发送给方法,但它也不起作用。

4

4 回答 4

3
public class Foo {
    public static void main(String[] args) {
        Foo foo = new Foo();
        foo.print();
    }
    public void print() {
        System.out.println("Hello");
    }   
}
于 2012-11-23T16:09:42.727 回答
1

您需要一个类的实例才能从静态方法访问(调用)非静态方法。非静态方法或实例方法仅限于类的实例。

以下是描述它的简单示例:

class Test {
public void nonStaticMethod() {
}
public static void main(String[] args) {
Test t = new Test(); //you need to create an instance of class Test to access non-static methods from static metho
t.nonStaticMethod();
}

}

于 2012-11-23T16:07:57.383 回答
1

main是一种静态方法。public static void main(String[] args).

从静态方法或块任何其他静态方法以及静态实例都是可访问的。如果您想访问非静态方法或实例,则必须创建对象并通过引用进行访问。

public class Test{
    public static void main(String[] args){
        print();// static method call
        Test test = new Test();
        test.print();// non static method call
    }
    public void print() {
        System.out.println("Hello non static");
    }
    public static void print() {
        System.out.println("Hello static");
    }
}
于 2012-11-23T16:09:18.673 回答
0

创建对象时会实例化常规方法,但这不是static方法所必需的。说你在一个static方法中,不能保证非静态方法已经被实例化(即可能没有Object创建),所以编译器不允许它。

于 2012-11-23T16:08:58.183 回答