Heim  >  Artikel  >  Java  >  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
DDDOriginal
2024-10-30 16:33:26896Durchsuche

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>

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>

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>

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>

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!

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