Como acessar uma variável oculta por uma classe derivada (Visual Basic)How to: Access a Variable Hidden by a Derived Class (Visual Basic)
Quando o código em uma classe derivada acessa uma variável, o compilador normalmente resolve a referência à versão acessível mais próxima, ou seja, a versão acessível o menor número de etapas de derivação para trás da classe de acesso.When code in a derived class accesses a variable, the compiler normally resolves the reference to the closest accessible version, that is, the accessible version the fewest derivational steps backward from the accessing class. Se a variável for definida na classe derivada, o código normalmente acessará essa definição.If the variable is defined in the derived class, the code normally accesses that definition.
Se a variável de classe derivada sombreia uma variável na classe base, ela ocultará a versão da classe base.If the derived class variable shadows a variable in the base class, it hides the base class version. No entanto, você pode acessar a variável de classe base qualificando-a com a MyBase
palavra-chave.However, you can access the base class variable by qualifying it with the MyBase
keyword.
Para acessar uma variável de classe base ocultada por uma classe derivadaTo access a base class variable hidden by a derived class
Em uma expressão ou instrução de atribuição, preceda o nome da variável com a
MyBase
palavra-chave e um ponto (.
).In an expression or assignment statement, precede the variable name with theMyBase
keyword and a period (.
).O compilador resolve a referência à versão da classe base da variável.The compiler resolves the reference to the base class version of the variable.
O exemplo a seguir ilustra o sombreamento por meio de herança.The following example illustrates shadowing through inheritance. Ele faz duas referências, uma que acessa a variável de sombreamento e outra que ignora o sombreamento.It makes two references, one that accesses the shadowing variable and one that bypasses the shadowing.
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.The preceding example declares the variableshadowString
in the base class and shadows it in the derived class. O procedimentoshowStrings
na classe derivada exibe a versão de sombreamento da cadeia de caracteres quando o nomeshadowString
não é qualificado.The procedureshowStrings
in the derived class displays the shadowing version of the string when the nameshadowString
is not qualified. Em seguida, ele exibe a versão sombreada quandoshadowString
é qualificado com aMyBase
palavra-chave.It then displays the shadowed version whenshadowString
is qualified with theMyBase
keyword.
Programação robustaRobust Programming
Para reduzir o risco de se referir a uma versão não intencional de uma variável sombreada, você pode qualificar totalmente todas as referências a uma variável sombreada.To lower the risk of referring to an unintended version of a shadowed variable, you can fully qualify all references to a shadowed variable. O sombreamento apresenta mais de uma versão de uma variável com o mesmo nome.Shadowing introduces more than one version of a variable with the same name. 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 do código e a presença de uma cadeia de caracteres de qualificação.When a code statement refers to the variable name, the version to which the compiler resolves the reference depends on factors such as the location of the code statement and the presence of a qualifying string. Isso pode aumentar o risco de se referir à versão errada da variável.This can increase the risk of referring to the wrong version of the variable.
Consulte tambémSee also
- Referências a elementos declaradosReferences to Declared Elements
- Sombreamento no Visual BasicShadowing in Visual Basic
- Diferenças entre sombreamento e sobreposiçãoDifferences Between Shadowing and Overriding
- Como ocultar uma variável com o mesmo nome que a variávelHow to: Hide a Variable with the Same Name as Your Variable
- Como ocultar uma variável herdadaHow to: Hide an Inherited Variable
- SombrasShadows
- SubstituiçõesOverrides
- Me, My, MyBase e MyClassMe, My, MyBase, and MyClass
- Noções básicas de herançaInheritance Basics