ホームページ  >  記事  >  Java  >  Java では静的メソッドが非静的フィールドにアクセスできないのはなぜですか?

Java では静的メソッドが非静的フィールドにアクセスできないのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-31 06:55:02904ブラウズ

Why Can't a Static Method Access a Non-Static Field in Java?

静的メソッドからの非静的フィールド参照

Java では、非静的フィールドまたはメソッドに対して静的参照を行うことはできません。これは、非静的フィールドやメソッドとは異なり、静的要素はクラスのインスタンスとは独立して存在するためです。

次のコードを考えてみましょう。

public class NonStaticFieldReference {

    private float r; // Non-static field

    public static void main(String[] args) {
        System.out.println(r); // Error!
        c_area(); // Error!
    }

    private static void c_area() {
        // Cannot reference non-static field r from static method
    }
}

この例では、main( ) メソッドは静的です。つまり、非静的フィールド 'r' にアクセスできません。同様に、静的メソッド c_area() は、非静的フィールド 'r' にアクセスできません。

解決策

この問題を解決するには、クラスのインスタンスを作成し、そのインスタンスを通じて非静的フィールドとメソッドにアクセスします。

public class NonStaticFieldReference {

    private float r; // Non-static field

    public static void main(String[] args) {
        NonStaticFieldReference instance = new NonStaticFieldReference();
        instance.r = 5;
        instance.c_area();
    }

    private void c_area() {
        // Access non-static field r from non-static method
    }
}

このようにして、非静的フィールド 'r' はクラスのオブジェクトを通じてアクセスされ、適切なフィールド参照が可能になります。

以上がJava では静的メソッドが非静的フィールドにアクセスできないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。