Heim >Java >javaLernprogramm >Warum kommt es beim Überschreiben von Mitgliedsvariablen in Java zum Ausblenden von Variablen?

Warum kommt es beim Überschreiben von Mitgliedsvariablen in Java zum Ausblenden von Variablen?

Linda Hamilton
Linda HamiltonOriginal
2024-12-20 20:02:10373Durchsuche

Why Does Variable Hiding Occur When Overriding Member Variables in Java?

Enthüllung der Nuancen des Variablenversteckens in Java

Während Sie das Konzept des Überschreibens von Mitgliedsfunktionen in Java untersucht haben, haben Sie den Versuch gewagt, mit überschreibenden Mitgliedsvariablen zu experimentieren. Zu diesem Zweck haben Sie die folgende Klassenstruktur erstellt:

class A {
    public int intVal = 1;
}

class B extends A {
    public int intVal = 2;
}

class MainClass {
    public static void main(String[] args) {
        A a = new A();
        B b = new B();
        A aRef;
        aRef = a;
        System.out.println(aRef.intVal);
        aRef.identifyClass();
        aRef = b;
        System.out.println(aRef.intVal);
        aRef.identifyClass();
    }
}

Die Ausführung dieses Codes erzeugte die folgende Ausgabe:

1
I am class A
1
I am class B

Sie äußerten Verwirrung darüber, warum aRef.intVal auch nach seiner Einführung 1 blieb einer Instanz der Klasse B zugewiesen. Um dieses Rätsel zu lösen, müssen Sie sich darüber im Klaren sein, dass es sich in dem von Ihnen vorgestellten Szenario eher um das Verstecken von Variablen als um das Verstecken von Variablen handelt überschreiben.

In Java können Sie eine Variable mit demselben Namen in einer Oberklasse und einer Unterklasse haben. Diese Technik zum Ausblenden von Variablen verbirgt effektiv die Superklassenvariable. Beide Variablen existieren jedoch weiterhin unabhängig voneinander in ihren jeweiligen Klassen.

Wenn Sie über eine Referenz der Oberklasse auf die Variable zugreifen, interagieren Sie mit der Oberklassenvariablen. Die Referenz selbst wird nicht von der Klasse des Objekts beeinflusst, auf das sie verweist. Obwohl aRef auf eine Instanz der Klasse B zeigt, greift es daher auf die intVal-Variable von Klasse A zu, da dies die Klasse ist, zu der aRef gehört.

Um auf die intVal-Variable von der Unterklasse (B) zuzugreifen, müssen Sie kann das Schlüsselwort super verwenden, das auf die Superklasse verweist. Mit diesem Ansatz können Sie zwischen Variablen mit demselben Namen in der Oberklasse und der Unterklasse unterscheiden und so Unklarheiten beseitigen.

Das obige ist der detaillierte Inhalt vonWarum kommt es beim Überschreiben von Mitgliedsvariablen in Java zum Ausblenden von Variablen?. 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