首頁  >  文章  >  Java  >  為什麼我收到 Java 錯誤「無法對非靜態欄位進行靜態引用」?

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

Susan Sarandon
Susan Sarandon原創
2024-11-01 18:10:02275瀏覽

Why am I getting the Java error

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中文網其他相關文章!

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