静的メソッドからの非静的フィールド参照
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 サイトの他の関連記事を参照してください。