Java 錯誤:「無法對非靜態欄位進行靜態引用」
嘗試存取非靜態欄位時會出現此錯誤靜態方法中的靜態字段。在Java中,靜態方法屬於類,只能存取靜態變量,而非靜態方法(實例方法)屬於類別的實例,既可以存取靜態變量,也可以存取非靜態變數。
中在您的程式碼中,主方法是靜態的,它嘗試呼叫非靜態的提款和存款方法。該錯誤表示您正在嘗試從靜態上下文中引用餘額欄位。
解決方案:
要解決此問題,您需要使提款和存款方法也是靜態的。但是,不建議修改原始方法,因為它們旨在對特定帳戶實例進行操作。相反,請在主方法中建立這些方法的重載版本。
以下是更新後的程式碼:
<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中文網其他相關文章!