Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Una clase derivada hereda todas las definiciones de su clase base. Si desea definir una variable con el mismo nombre que un elemento de la clase base, puede ocultar o sombra ese elemento de clase base al definir la variable en la clase derivada. Si lo hace, 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 quiera ocultar una variable heredada es proteger contra la revisión de la clase base. La clase base puede sufrir un cambio que modifique el elemento que hereda. Si esto sucede, el modificador Shadows
obliga a que las referencias de la clase derivada se resuelvan a tu variable, en lugar de al elemento de la clase base.
Para ocultar una variable heredada
Asegúrese de que la variable que desea ocultar se declara en el nivel de clase (fuera de cualquier procedimiento). De lo contrario, no es necesario ocultarlo.
Dentro de la clase derivada, escriba una instrucción Dim declarando la variable. Use el mismo nombre que el de la variable heredada.
Incluya la palabra clave Shadows 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 sombrea en la clase derivada. El procedimientoShowStrings
de la clase derivada muestra la versión de sombreado de la cadena cuando el nombreshadowString
no está calificado. A continuación, muestra la versión sombreada cuandoshadowString
se califica con laMyBase
palabra clave .
Programación sólida
Shadowing presenta más de una versión de una variable con el mismo nombre. Cuando una instrucción de código hace referencia al nombre de la variable, la versión a la que el compilador resuelve la referencia depende de factores como la ubicación de la instrucción de código y la presencia de una cadena apta. Esto puede aumentar el riesgo de hacer referencia a una versión no deseada de una variable sombreada. Puede reducir ese riesgo cualificando completamente todas las referencias a una variable sombreada.