Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Eine abgeleitete Klasse erbt alle Definitionen der Basisklasse. Wenn Sie eine Variable mit demselben Namen wie ein Element der Basisklasse definieren möchten, können Sie dieses Basisklassenelement ausblenden oder schatten, wenn Sie die Variable in der abgeleiteten Klasse definieren. Wenn Sie dies tun, greift Code in der abgeleiteten Klasse auf Ihre Variable zu, es sei denn, er umgeht explizit den Schattenmechanismus.
Ein weiterer Grund, warum Sie eine geerbte Variable ausblenden möchten, ist der Schutz vor der Revision der Basisklasse. Die Basisklasse kann sich einer Änderung unterziehen, die das von Ihnen geerbte Element ändert. In diesem Fall erzwingt der Shadows
Modifizierer, dass Verweise von der abgeleiteten Klasse zu Ihrer Variablen aufgelöst werden, statt zum Basisklassenelement.
So verbergen Sie eine geerbte Variable
Stellen Sie sicher, dass die Variable, die Sie ausblenden möchten, auf Klassenebene deklariert ist (außerhalb einer Prozedur). Andernfalls brauchen Sie es nicht zu verbergen.
Schreiben Sie in Ihrer abgeleiteten Klasse eine Dim-Anweisung, die Ihre Variable deklariert. Verwenden Sie denselben Namen wie die der geerbten Variablen.
Schließen Sie das Schlüsselwort Shadows in die Deklaration ein.
Wenn Code in der abgeleiteten Klasse auf den Variablennamen verweist, löst der Compiler den Verweis auf die Variable auf.
Das folgende Beispiel veranschaulicht das Schattieren einer geerbten Variablen:
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 vorherigen Beispiel wird die Variable
shadowString
in der Basisklasse deklariert und in der abgeleiteten Klasse schattiert. Die ProzedurShowStrings
in der abgeleiteten Klasse zeigt die Schattenversion der Zeichenfolge an, wenn der NameshadowString
nicht qualifiziert ist. Anschließend wird die schattierte Version angezeigt, wennshadowString
mit demMyBase
Schlüsselwort qualifiziert wird.
Stabile Programmierung
Bei der Schattenerstellung werden mehrere Versionen einer Variablen mit demselben Namen eingeführt. Wenn sich eine Code-Anweisung auf den Variablennamen bezieht, hängt die Version, auf die der Compiler den Verweis auflöst, von Faktoren wie dem Ort der Code-Anweisung und dem Vorhandensein einer qualifizierenden Zeichenfolge ab. Dies kann das Risiko erhöhen, auf eine unbeabsichtigte Version einer abgeschatteten Variablen zu verweisen. Sie können dieses Risiko verringern, indem Sie alle Verweise auf eine schattierte Variable vollständig qualifizieren.
Siehe auch
- Verweise auf deklarierte Elemente
- Schatten in Visual Basic
- Unterschiede zwischen Überschattung und Überschreiben
- Vorgehensweise: Ausblenden einer Variable mit demselben Namen wie Ihre Variable
- Vorgehensweise: Zugreifen auf eine Variable, die von einer abgeleiteten Klasse ausgeblendet wird
- Außerkraftsetzungen
- Me, My, MyBase und MyClass
- Vererbungsgrundlagen