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
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.
Dentro de sua classe derivada, escreva uma instrução Dim declarando sua variável. Use o mesmo nome da variável herdada.
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 procedimentoShowStrings
na classe derivada exibe a versão de sombreamento da cadeia de caracteres quando o nomeshadowString
não é qualificado. Em seguida, exibe a versão sombreada quandoshadowString
é qualificada com aMyBase
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.