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
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.
Verfassen Sie innerhalb der abgeleiteten Klasse eine Dim-Anweisung (Visual Basic), die Ihre Variable deklariert. Verwenden Sie den Namen der geerbten Variablen.
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
Unterschiede zwischen Shadowing und Überschreiben