ホームページ >Java >&#&チュートリアル >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 サイトの他の関連記事を参照してください。