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

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

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-30 18:47:31349ブラウズ

Why am I getting the

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

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

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

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

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

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

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

メイン メソッドの改訂コード:

<code class="java">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());
}</code>

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

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

public void deposit(double depositAmount) {
    balance += depositAmount;
}</code>

以上がJava で「非静的フィールドへの静的参照を作成できません」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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