Heim >Java >javaLernprogramm >Warum erhalte ich die Java-Fehlermeldung „Es kann kein statischer Verweis auf das nichtstatische Feld erstellt werden'?
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!