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

DDD
リリース: 2024-11-01 11:23:25
オリジナル
894 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!