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.
Cuando el código de una clase derivada accede a una variable, el compilador normalmente resuelve la referencia a la versión accesible más cercana, es decir, la versión accesible los pocos pasos de derivación más atrás de la clase de acceso. Si la variable se define en la clase derivada, el código normalmente accede a esa definición.
Si la variable de clase derivada sombrea una variable en la clase base, oculta la versión de la clase base. Sin embargo, puede acceder a la variable de la clase base usando la palabra clave MyBase.
Para acceder a una variable de clase base oculta por una clase derivada
En una expresión o instrucción de asignación, precede el nombre de la variable con la clave
MyBasey un punto (.).El compilador resuelve la referencia a la versión de clase base de la variable.
En el ejemplo siguiente se muestra el proceso de reemplazo a través de la herencia. Hace dos referencias, una que accede a la variable reemplazada y otra que omite el reemplazo.
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 ClassEn el ejemplo anterior se declara la variable
shadowStringen la clase base y se sombrea en la clase derivada. El procedimientoshowStringsde la clase derivada muestra la versión de sombreado de la cadena cuando el nombreshadowStringno está calificado. A continuación, muestra la versión sombreada cuandoshadowStringse califica con laMyBasepalabra clave .
Programación sólida
Para reducir el riesgo de hacer referencia a una versión no deseada de una variable sombreada, puede calificar completamente todas las referencias a una variable sombreada. 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 la versión incorrecta de la variable.