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

DDD
リリース: 2024-10-30 16:33:26
オリジナル
910 人が閲覧しました

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

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