「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Java で「非静的フィールドへの静的参照を作成できません」エラーが発生するのはなぜですか?

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

2024 年 11 月 7 日に公開
ブラウズ:618

Why am I getting the \

「非静的フィールドへの静的参照を作成できません」エラーを回避する

Java プログラミングでは、「静的フィールドを作成できません」静的メソッド内の非静的フィールド (インスタンス変数とも呼ばれる) にアクセスしようとすると、「非静的フィールドへの参照」エラーが発生します。

提供されたコードでは、メイン メソッドが原因でエラーが発生します。は static として宣言されています。これは、静的なメソッドやフィールドを含む、クラスの静的なメンバーのみを参照できることを意味します。ただし、balance フィールドと AnnualInterestRate フィールドは非静的です。つまり、Account クラスの各インスタンスに固有です。

このエラーを解決するには、適切な Java 構文に従うようにコードを変更する必要があります。

  • > 非静的フィールドへの静的参照を削除します:

    • メイン メソッド内の Balance と AnnualInterestRate への参照は削除する必要があります。これらは、オブジェクト参照を通じてアクセスされるインスタンス変数です (例: account.getBalance()、account.getAnnualInterestRate())
  • > 非静的メソッドの作成 インスタンス メソッド:

    • 引き出しメソッドと入金メソッドは、オブジェクト参照を通じて残高フィールドにアクセスする必要があるため、非静的として宣言する必要があります。これにより、特定のアカウント インスタンスの残高を変更できるようになります。

main メソッドの改訂コード:

public static void main(String[] args) {
    Account account = new Account(1122, 20000, 4.5);

    account.withdraw(2500);
    account.deposit(3000);
    System.out.println("Balance is "   account.getBalance());
    System.out.println("Monthly interest is "   account.getAnnualInterestRate() / 12);
    System.out.println("The account was created "   account.getDateCreated());
}

出金および入金メソッドのコードの改訂:

public void withdraw(double withdrawAmount) {
    balance -= withdrawAmount;
}

public void deposit(double depositAmount) {
    balance  = depositAmount;
}
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3