Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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 de 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 de classe base. A classe base pode passar por 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
Verifique se a variável que você deseja ocultar é declarada no nível da classe (fora de qualquer procedimento). Caso contrário, você não precisará ocultá-lo.
Dentro de sua classe derivada, escreva uma declaração Dim para declarar sua variável. Use o mesmo nome que o da variável herdada.
Inclua a palavra-chave Sombras na declaração.
Quando o código na classe derivada se refere ao nome da variável, o compilador resolve a referência à 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 ClassO exemplo anterior declara a variável
shadowStringna classe base e a sombreia na classe derivada. O procedimentoShowStringsna classe derivada exibe a versão de sombreamento da cadeia de caracteres quando o nomeshadowStringnão é qualificado. Em seguida, ele exibe a versão sombreada quandoshadowStringé qualificada com aMyBasepalavra-chave.
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 de código e a presença de uma cadeia de caracteres qualificada. 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.