ホームページ >Java >&#&チュートリアル >Java エラー「非静的フィールドへの静的参照を作成できません」が表示されるのはなぜですか?
Java エラー: 「非静的フィールドへの静的参照を作成できません」
このエラーは、非静的フィールドにアクセスしようとすると発生します。静的メソッド内の静的フィールド。 Java では、静的メソッドはクラスに属し、静的変数にのみアクセスできますが、非静的メソッド (インスタンス メソッド) はクラスのインスタンスに属し、静的変数と非静的変数の両方にアクセスできます。
コードでは、メイン メソッドは静的であり、非静的であるdrawing メソッドとdeposit メソッドを呼び出そうとします。このエラーは、静的コンテキスト内からバランス フィールドを参照しようとしていることを示しています。
解決策:
この問題を解決するには、引き出しメソッドと入金メソッドも静的です。ただし、元のメソッドは特定のアカウント インスタンスで動作することを目的としているため、変更することはお勧めできません。代わりに、メイン メソッド内でこれらのメソッドのオーバーロード バージョンを作成します。
更新されたコードは次のとおりです:
<code class="java">public class Account { // Static variables public static int id = 0; public static double annualInterestRate = 0; public static java.util.Date dateCreated; // Non-static variables private double balance = 0; public static void main(String[] args) { // Create an instance of Account Account account = new Account(1122, 20000, 4.5); // Overloaded methods (static) double newBalance = withdraw(account.balance, 2500); newBalance = deposit(newBalance, 3000); System.out.println("Balance is " + account.getBalance()); System.out.println("Monthly interest is " + (account.annualInterestRate / 12)); System.out.println("The account was created " + account.getDateCreated()); } // Overloaded methods public static double withdraw(double balance, double withdrawAmount) { balance -= withdrawAmount; return balance; } public static double deposit(double balance, double depositAmount) { balance += depositAmount; return balance; } }</code>
静的なオーバーロード メソッドを作成することで、メイン メソッド内のバランス フィールドにアクセスできるようになりました。 。これらのオーバーロードされたメソッドは、現在の残高をパラメータとして受け取り、操作を実行して、更新された残高を返します。
以上がJava エラー「非静的フィールドへの静的参照を作成できません」が表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。