Como ocultar uma variável herdada (Visual Basic)

Uma classe derivada herda todas as definições de sua classe base. Se você quiser definir uma variável usando o mesmo nome que um elemento da classe base, poderá ocultar ou sombrear esse elemento da classe base quando definir sua variável na classe derivada. Se você fizer isso, o código na classe derivada acessará sua variável, a menos que ela ignore explicitamente o mecanismo de sombreamento.

Outro motivo pelo qual você pode querer ocultar uma variável herdada é proteger contra a revisão da classe base. A classe base pode sofrer uma alteração que altera o elemento que você está herdando. Se isso acontecer, o modificador Shadows força as referências da classe derivada a serem resolvidas para sua variável, em vez de para o elemento da classe base.

Para ocultar uma variável herdada

  1. Verifique se a variável que você deseja ocultar está declarada no nível da classe (fora de qualquer procedimento). Caso contrário, você não precisará ocultá-la.

  2. Dentro de sua classe derivada, escreva uma Instrução Dim declarando sua variável. Use o mesmo nome que o da variável herdada.

  3. Inclua a palavra-chave Shadows na declaração.

    Quando o código na classe derivada se referir ao nome da variável, o compilador resolverá a referência para sua variável.

    O exemplo a seguir ilustra o sombreamento de uma variável herdada:

    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  
    

    O exemplo anterior declara a variável shadowString na classe base e a sombreia na classe derivada. O procedimento ShowStrings na classe derivada exibe a versão de sombreamento da cadeia de caracteres quando o nome shadowString não é qualificado. Em seguida, ele exibe a versão sombreada quando shadowString é qualificada com a palavra-chave MyBase.

Programação robusta

O sombreamento apresenta mais de uma versão de uma variável com o mesmo nome. Quando uma instrução de código se refere ao nome da variável, a versão à qual o compilador resolve a referência depende de fatores como o local da instrução do código e a presença de uma cadeia de caracteres qualificada. Isso pode aumentar o risco de fazer referência a uma versão não intencional de uma variável sombreada. Você pode reduzir esse risco qualificando totalmente todas as referências a uma variável sombreada.

Confira também