-3

メインのメソッドを呼び出そうとすると、エラーが発生します

非静的メソッドは、静的コンテキストから参照できません

メインでオブジェクトを作成し、それらをパラメーターとしてメソッドに送信しようとしましたが、どちらも機能しません。

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 に答える