Cómo: Ocultar una variable heredada (Visual Basic)
Una clase derivada hereda todas las definiciones de su clase base. Si quieres definir una variable con el mismo nombre que un elemento de la clase base, puedes ocultar o sombrear ese elemento de clase base al definir la variable en la clase derivada. Si lo haces, el código de la clase derivada accede a la variable a menos que omita explícitamente el mecanismo de sombreado.
Otra razón por la que es posible que quieras ocultar una variable heredada es proteger contra la revisión de clase base. La clase base puede sufrir un cambio que modifique el elemento que hereda. Si esto sucede, el Shadows
modificador obliga a que las referencias de la clase derivada se resuelvan en la variable, en lugar de en el elemento de clase base.
Para ocultar una variable heredada
Asegúrate de que la variable que quieres ocultar se declara en una clase y en el nivel de clase (fuera de cualquier procedimiento). De lo contrario, no es necesario ocultarla.
Dentro de la clase derivada, escribe una instrucción Dim que declare tu variable. Usa el mismo nombre que el de la variable heredada.
Incluye la palabra clave Shadows (Propiedades reemplazadas) en la declaración.
Cuando el código de la clase derivada hace referencia al nombre de la variable, el compilador resuelve la referencia a la variable.
En el ejemplo siguiente se muestra la sombra de una variable heredada:
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
En el ejemplo anterior se declara la variable
shadowString
en la clase base y se reemplaza en la clase derivada. El procedimientoShowStrings
de la clase derivada muestra la versión de reemplazo de la cadena cuando el nombreshadowString
no está calificado. A continuación, muestra la versión reemplazada cuandoshadowString
se califica con la palabra claveMyBase
.
Programación sólida
El reemplazo de la propiedad presenta más de una versión de una variable con el mismo nombre. Cuando una instrucción del código hace referencia al nombre de la variable, la versión en la que el compilador resuelve la referencia depende de factores como la ubicación de la instrucción del código y la presencia de una cadena apta. Esto puede aumentar el riesgo de que se haga referencia a una versión no deseada de una variable con la propiedad reemplazada. Puedes reducir ese riesgo mediante la calificación completa de todas las referencias a una variable reemplazada.
Consulte también
- References to Declared Elements
- Sombrear en Visual Basic
- Diferencias entre sombrear y reemplazar
- Procedimiento para ocultar una variable con el mismo nombre que su variable
- Procedimiento para obtener acceso a una variable que se encuentra oculta por una clase derivada
- Invalidaciones
- Me, My, MyBase y MyClass
- Fundamentos de la herencia