ホームページ  >  記事  >  Java  >  Java エラー「非静的フィールドへの静的参照を作成できません」が表示されるのはなぜですか?

Java エラー「非静的フィールドへの静的参照を作成できません」が表示されるのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-01 18:10:02275ブラウズ

Why am I getting the Java error

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

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