ホームページ  >  記事  >  Java  >  非静的フィールドへの静的参照を行うときに Java がエラーをスローするのはなぜですか?

非静的フィールドへの静的参照を行うときに Java がエラーをスローするのはなぜですか?

DDD
DDDオリジナル
2024-11-01 11:23:25892ブラウズ

Why Does Java Throw an Error When Making a Static Reference to a Non-Static Field?

非静的フィールドへの静的参照

Java では、非静的フィールドへの静的参照はエラーの原因となる可能性があります。この問題を理解して解決するために、具体的な例を詳しく見てみましょう。

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

<code class="java">public class Account {

    private int id = 0;
    private double balance = 0;

    public static void main(String[] args) {
        Account account = new Account(1122, 20000);
        account.withdraw(balance, 2500);
    }

    public void withdraw(double withdrawAmount) {
        balance -= withdrawAmount;
    }
}</code>

このコードをコンパイルしようとすると、次のエラーが発生します:

Cannot make a static reference to the non-static field balance

このエラーは、withdraw メソッドが静的として宣言されているために発生します。つまり、オブジェクト インスタンスを必要とせずにクラスから直接呼び出すことができます。ただし、残高フィールドは非静的です。つまり、オブジェクト インスタンスを通じてのみアクセスできます。

このエラーを修正するには、withdraw メソッドを変更して静的宣言を削除する必要があります。

<code class="java">public void withdraw(double withdrawAmount) {
    balance -= withdrawAmount;
}</code>

あるいは、バランス フィールドを静的にすることもできます。これにより、オブジェクト インスタンスなしでアクセスできるようになります。ただし、クラスのすべてのインスタンス間で変更可能な状態が共有される可能性があるため、これは常に望ましいとは限りません。

これらの原則に従うことで、そのようなエラーを回避し、コードが Java の静的および非準拠に準拠していることを確認できます。静的フィールドの使用ガイドライン。

以上が非静的フィールドへの静的参照を行うときに Java がエラーをスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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