Partilhar via


Como ocultar uma variável herdada (Visual Basic)

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

Outra razão pela 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 Shadows modificador força as referências da classe derivada a serem resolvidas para sua variável, em vez de para o elemento de classe base.

Para ocultar uma variável herdada

  1. Certifique-se de que a variável que você deseja ocultar seja declarada no nível da classe (fora de qualquer procedimento). Caso contrário, você não precisa escondê-lo.

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

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

    Quando o código na classe derivada se refere ao nome da variável, o compilador resolve a referência à 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, exibe a versão sombreada quando shadowString é qualificada com a MyBase palavra-chave.

Programação robusta

O sombreamento introduz 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 para a qual o compilador resolve a referência depende de fatores como o local da instrução de código e a presença de uma cadeia de caracteres de qualificação. Isso pode aumentar o risco de se referir 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.

Consulte também