ホームページ >Java >&#&チュートリアル >Java の静的メソッドから非静的フィールドにアクセスできないのはなぜですか?

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

DDD
DDDオリジナル
2024-10-30 16:33:26996ブラウズ

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

静的コンテキストでの非静的フィールド参照

Java では、静的メソッドは非静的フィールドに直接アクセスできません。このエラーは通常、静的メソッドからインスタンス変数にアクセスしようとしたときに発生します。

問題の理解

指定されたコードでは、メイン メソッドでエラーが発生します。

<code class="java">Account account = new Account(1122, 20000, 4.5);

account.withdraw(balance, 2500);</code>

ここで、draw() メソッドは静的ですが、非静的フィールド バランスにアクセスしようとします。 main メソッドは静的であるため、balance などのインスタンス変数を参照できません。

解決策

このエラーを解決するには、メソッドを非静的にするか、フィールドをstatic.

オプション 1: Withdraw メソッドを非静的にする

withdraw() メソッドを次のように変更します。

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

ここで、メソッドは、非静的であるため残高フィールドにアクセスできます。

オプション 2: 残高フィールドを静的にする

または、残高フィールドを静的にします:

<code class="java">private static double balance = 0;</code>

これで、main メソッドのような静的コンテキストから残高フィールドにアクセスできるようになります:

<code class="java">Account account = new Account(1122, 20000, 4.5);

account.withdraw(balance, 2500);</code>

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

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