Cómo: Obtener acceso a una variable que oculta una clase derivada (Visual Basic)

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 con los mínimos pasos de derivación hacia atrás desde 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 reemplaza una variable en la clase base, oculta la versión de la clase base. Sin embargo, puede acceder a la variable de clase base si la califica con 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 al nombre de la variable con la palabra clave MyBase y 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 Class
    

    En el ejemplo anterior se declara la variable shadowString en la clase base y se reemplaza en la clase derivada. El procedimiento showStrings de la clase derivada muestra la versión de reemplazo de la cadena cuando el nombre shadowString no está calificado. A continuación, muestra la versión reemplazada cuando shadowString se califica con la palabra clave MyBase.

Programación sólida

Para reducir el riesgo de hacer referencia a una versión no deseada de una variable reemplazada, puede calificar completamente todas las referencias a una variable reemplazada. Reemplazar 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.

Consulte también