Heim > Java > javaLernprogramm > Warum kann ich in Java nicht über eine statische Methode auf ein nicht statisches Feld zugreifen?

Warum kann ich in Java nicht über eine statische Methode auf ein nicht statisches Feld zugreifen?

DDD
Freigeben: 2024-10-30 16:33:26
Original
990 Leute haben es durchsucht

Why Can't I Access a Non-Static Field from a Static Method in Java?

Nicht-statische Feldreferenz im statischen Kontext

In Java können statische Methoden nicht direkt auf nicht-statische Felder zugreifen. Dieser Fehler tritt normalerweise auf, wenn versucht wird, über eine statische Methode auf eine Instanzvariable zuzugreifen.

Das Problem verstehen

Im angegebenen Code tritt der Fehler in der Hauptmethode auf:

<code class="java">Account account = new Account(1122, 20000, 4.5);

account.withdraw(balance, 2500);</code>
Nach dem Login kopieren
Nach dem Login kopieren

Hier ist die Methode „draw()“ statisch, sie versucht jedoch, auf den nicht statischen Feldsaldo zuzugreifen. Da die Hauptmethode statisch ist, kann sie nicht auf Instanzvariablen wie Balance verweisen.

Lösung

Um diesen Fehler zu beheben, machen Sie entweder die Methode nicht statisch oder das Feld statisch.

Option 1: Machen Sie die Auszahlungsmethode nicht statisch

Ändern Sie die Methode „draw()“ in:

<code class="java">public void withdraw(double withdrawAmount) {
    balance -= withdrawAmount;
}</code>
Nach dem Login kopieren

Nun, die Methode kann auf das Saldenfeld zugreifen, da es nicht statisch ist.

Option 2: Machen Sie das Saldenfeld statisch

Alternativ machen Sie das Saldenfeld statisch:

<code class="java">private static double balance = 0;</code>
Nach dem Login kopieren

Jetzt kann auf das Saldofeld aus statischen Kontexten wie der Hauptmethode zugegriffen werden:

<code class="java">Account account = new Account(1122, 20000, 4.5);

account.withdraw(balance, 2500);</code>
Nach dem Login kopieren
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum kann ich in Java nicht über eine statische Methode auf ein nicht statisches Feld zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage