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