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

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

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-01 04:38:02457ブラウズ

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

静的メソッドからの非静的フィールドの参照

「非静的フィールドへの静的参照を作成できません」というエラーが発生した場合、静的フィールドとメソッドと非静的フィールドとメソッドの区別を理解することが重要です。

静的フィールドとメソッドは、特定のオブジェクト インスタンスに関連付けられていないクラスレベルの属性と関数です。逆に、静的でないフィールドとメソッドはインスタンス固有であり、クラスのインスタンスのコンテキスト内でのみ意味を持ちます。

提供されたコードのコンテキストでは、静的としてマークされたメイン メソッドは、非静的な場のバランス。ただし、静的メソッドは非静的フィールドを直接参照できないため、これは許可されません。その理由は、静的メソッドにはクラスの特定のインスタンスへの暗黙的な参照がないためです。

この問題を解決するには、メイン メソッドを非静的にする (メイン メソッドから "static" キーワードを削除する) ことができます。宣言) を変更するか、残高フィールドへのインスタンス レベルのアクセスを使用するように引き出しメソッドと入金メソッドを変更します。例:

<code class="java">public Account() {
    // ...
    balance = 20000;
}

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

必要に応じて、静的メソッドを定義して引き出し操作と入金操作を実行することもできます。

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

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