首頁 >Java >java教程 >為什麼我在 Java 中收到「無法對非靜態欄位進行靜態引用」錯誤?

為什麼我在 Java 中收到「無法對非靜態欄位進行靜態引用」錯誤?

Linda Hamilton
Linda Hamilton原創
2024-10-30 18:47:31456瀏覽

Why am I getting the

避免「無法對非靜態欄位進行靜態引用」錯誤

在Java 程式設計中,「無法對非靜態欄位進行靜態引用」錯誤

嘗試在靜態方法中存取非靜態欄位(也稱為實例變數)時,會發生「引用非靜態欄位」錯誤。

在提供的程式碼中,出現該錯誤是因為 main 方法被宣告為靜態,表示它只能引用類別的靜態成員,包括靜態方法和欄位。但是,字段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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn