Gewusst wie: Ausblenden einer geerbten Variablen

Aktualisiert: November 2007

Eine abgeleitete Klasse erbt alle Definitionen ihrer Basisklasse. Falls Sie eine Variable unter Verwendung des Namens eines Basisklassenelements definieren möchten, können Sie das betreffende Basisklassenelement ausblenden bzw. für das Element Shadowing durchführen, wenn Sie die Variable in der abgeleiteten Klasse definieren. In diesem Fall wird in der abgeleiteten Klasse auf die Variable zugegriffen, sofern der Shadowing-Mechanismus nicht explizit umgangen wird.

Es kann auch sinnvoll sein, eine geerbte Variable auszublenden, um eine Überarbeitung der Basisklasse zu verhindern. Die Basisklasse könnte in einer Weise verändert werden, die sich auf das Element auswirkt, das geerbt wird. In diesem Fall wird mit dem Shadows-Modifizierer erzwungen, dass Verweise in die abgeleitete Klasse der Variablen aufgelöst werden und nicht in das Basisklassenelement.

So blenden Sie eine geerbte Variable aus

  1. Stellen Sie sicher, dass die Variable, die Sie ausblenden möchten, auf Klassenebene (nicht innerhalb einer Prozedur) deklariert wird. Andernfalls muss sie nicht ausgeblendet werden.

  2. Verfassen Sie innerhalb der abgeleiteten Klasse eine Dim-Anweisung (Visual Basic), die Ihre Variable deklariert. Verwenden Sie den Namen der geerbten Variablen.

  3. Fügen Sie das Shadows-Schlüsselwort in die Deklaration ein.

    Wenn in der abgeleiteten Klasse auf diesen Variablennamen verwiesen wird, löst der Compiler den Verweis in die Variable auf.

    Im folgenden Beispiel wird das Shadowing einer geerbten Variable veranschaulicht.

    Public Class shadowBaseClass
        Public shadowString As String = "This is the base class string."
    End Class
    Public Class shadowDerivedClass
        Inherits shadowBaseClass
        Public Shadows shadowString As String = "This is the derived class string."
        Public Sub showStrings()
            Dim s As String = "Unqualified shadowString: " & shadowString _
                & vbCrLf & "MyBase.shadowString: " & MyBase.shadowString
            MsgBox(s)
        End Sub
    End Class
    

    Im vorhergehenden Beispiel wird die Variable shadowString in der Basisklasse deklariert und in der abgeleiteten Klasse mittels Shadowing ausgeblendet. Die Prozedur showStrings der abgeleiteten Klasse zeigt ihre Version der Zeichenfolge an, wenn der Name shadowString nicht qualifiziert wird. Sie zeigt die Basisklassenversion an, wenn shadowString mit dem MyBase-Schlüsselwort qualifiziert wird.

Robuste Programmierung

Mittels Shadowing können mehrere Varianten von gleichnamigen Variablen eingeführt werden. In welche Variante der Compiler Verweise auf den Variablennamen auflöst, hängt von verschiedenen Faktoren ab, wie der Position der Codeanweisung und der Angabe eines Qualifizierungspfads. Damit kann sich das Risiko erhöhen, dass versehentlich auf die falsche Variante einer Variablen, für die Shadowing durchgeführt wurde, verwiesen wird. Sie können das Risiko minimieren, indem Sie alle Verweise auf eine Variable, für die Shadowing durchgeführt wurde, vollständig qualifizieren.

Siehe auch

Aufgaben

Gewusst wie: Unterscheiden zwischen zwei Elementen mit dem gleichen Namen

Gewusst wie: Ausblenden einer Variablen mit dem gleichen Namen wie die aktuelle Variable

Gewusst wie: Zugreifen auf eine Variable, die von einer abgeleiteten Klasse ausgeblendet wird

Konzepte

Auflösen eines Verweises bei mehreren Variablen mit gleichem Namen

Shadowing in Visual Basic

Unterschiede zwischen Shadowing und Überschreiben

Referenz

Overrides

Weitere Ressourcen

Verweise auf deklarierte Elemente