Heim > Java > javaLernprogramm > 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
Freigeben: 2024-10-31 06:55:02
Original
921 Leute haben es durchsucht

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
    }
}
Nach dem Login kopieren

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
    }
}
Nach dem Login kopieren

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!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage