Heim  >  Artikel  >  Java  >  Warum kann eine statische Methode in Java nicht auf ein nicht statisches Feld zugreifen?

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

Susan Sarandon
Susan SarandonOriginal
2024-10-31 06:55:02820Durchsuche

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

Nicht-statische Feldreferenz aus einer statischen Methode

In Java kann keine statische Referenz auf ein nicht-statisches Feld oder eine nicht-statische Methode erstellt werden. Dies liegt daran, dass statische Elemente im Gegensatz zu nicht statischen Feldern und Methoden unabhängig von einer Instanz der Klasse existieren.

Betrachten Sie den folgenden Code:

public class NonStaticFieldReference {

    private float r; // Non-static field

    public static void main(String[] args) {
        System.out.println(r); // Error!
        c_area(); // Error!
    }

    private static void c_area() {
        // Cannot reference non-static field r from static method
    }
}

In diesem Beispiel ist das main( )-Methode ist statisch, das heißt, sie hat keinen Zugriff auf das nicht statische Feld „r“. Ebenso kann die statische Methode c_area() nicht auf das nicht-statische Feld „r“ zugreifen.

Lösung

Um dieses Problem zu beheben, erstellen Sie eine Instanz der Klasse und Greifen Sie über diese Instanz auf die nicht statischen Felder und Methoden zu.

public class NonStaticFieldReference {

    private float r; // Non-static field

    public static void main(String[] args) {
        NonStaticFieldReference instance = new NonStaticFieldReference();
        instance.r = 5;
        instance.c_area();
    }

    private void c_area() {
        // Access non-static field r from non-static method
    }
}

Auf diese Weise wird über ein Objekt der Klasse auf das nicht statische Feld „r“ zugegriffen, was eine ordnungsgemäße Feldreferenz ermöglicht.

Das obige ist der detaillierte Inhalt vonWarum kann eine statische Methode in Java nicht 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