Compartir a través de


Cómo: Ocultar una variable heredada (Visual Basic)

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

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

  2. Dentro de la clase derivada, escriba una instrucción Dim declarando la variable. Use el mismo nombre que el de la variable heredada.

  3. 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 procedimiento ShowStrings de la clase derivada muestra la versión de sombreado de la cadena cuando el nombre shadowString no está calificado. A continuación, muestra la versión sombreada cuando shadowString se califica con la MyBase 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.

Consulte también