」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 為什麼我在 Java 中收到「無法對非靜態欄位進行靜態引用」錯誤?

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

發佈於2024-11-07
瀏覽:806

Why am I getting the \

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

在Java程式設計中,「無法對非靜態欄位進行靜態引用」錯誤嘗試在靜態方法中存取非靜態欄位(也稱為實例變數)時,會發生「引用非靜態欄位」錯誤。

在提供的程式碼中,出現錯誤的原因是 main 方法被宣告為靜態,意味著它只能引用類別的靜態成員,包括靜態方法和欄位。然而,字段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