Heim  >  Artikel  >  Java  >  Warum erhalte ich die Java-Fehlermeldung „Es kann kein statischer Verweis auf das nichtstatische Feld erstellt werden“?

Warum erhalte ich die Java-Fehlermeldung „Es kann kein statischer Verweis auf das nichtstatische Feld erstellt werden“?

Susan Sarandon
Susan SarandonOriginal
2024-11-01 18:10:02275Durchsuche

Why am I getting the Java error

Java-Fehler: „Es kann kein statischer Verweis auf das nicht-statische Feld erstellt werden“

Dieser Fehler tritt auf, wenn versucht wird, auf ein nicht-statisches Feld zuzugreifen. statisches Feld innerhalb einer statischen Methode. In Java gehören statische Methoden zur Klasse und können nur auf statische Variablen zugreifen, während nicht statische Methoden (Instanzmethoden) zu einer Instanz der Klasse gehören und sowohl auf statische als auch nicht statische Variablen zugreifen können.

In In Ihrem Code ist die Hauptmethode statisch und versucht, die Auszahlungs- und Einzahlungsmethoden aufzurufen, die nicht statisch sind. Der Fehler deutet darauf hin, dass Sie versuchen, in einem statischen Kontext auf das Saldofeld zu verweisen.

Lösung:

Um dieses Problem zu beheben, müssen Sie Folgendes tun Auszahlungs- und Einzahlungsmethoden sind ebenfalls statisch. Es ist jedoch nicht ratsam, die ursprünglichen Methoden zu ändern, da sie für die Ausführung auf bestimmten Kontoinstanzen vorgesehen sind. Erstellen Sie stattdessen überladene Versionen dieser Methoden innerhalb der Hauptmethode.

Hier ist der aktualisierte Code:

<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>

Durch das Erstellen statischer überladener Methoden können Sie jetzt auf das Saldofeld innerhalb der Hauptmethode zugreifen . Diese überladenen Methoden nehmen den aktuellen Kontostand als Parameter, führen die Operationen aus und geben den aktualisierten Kontostand zurück.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich die Java-Fehlermeldung „Es kann kein statischer Verweis auf das nichtstatische Feld erstellt werden“?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn