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

  1. 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.

  2. Dentro de la clase derivada, escribe una instrucción Dim que declare tu variable. Usa el mismo nombre que el de la variable heredada.

  3. 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 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

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