Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Когда код в производном классе обращается к переменной, компилятор обычно разрешает ссылку на ближайшую доступную версию, то есть доступную версию с наименьшим количеством шагов наследования от класса, который выполняет доступ. Если переменная определена в производном классе, код обычно обращается к определению.
Если переменная производного класса перекрывает переменную в базовом классе, она скрывает версию базового класса. Однако вы можете получить доступ к переменной базового класса, квалифицируя ее с помощью ключевого MyBase слова.
Доступ к переменной базового класса, скрытой производным классом
В выражении или инструкции присваивания перед именем переменной следует указать ключевое слово
MyBaseи точку (.).Компилятор разрешает ссылку на версию базового класса переменной.
В следующем примере показано затенение посредством наследования. Он делает две ссылки: одна из них обращается к теневой переменной, а другая обходит затенение.
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В предыдущем примере переменная
shadowStringобъявляется в базовом классе и переопределяется в производном классе.showStringsПроцедура в производном классе отображает версию теневой строки, если имяshadowStringне указано. Отображается затем теневая версия, когдаshadowStringквалифицировано ключевым словомMyBase.
Надежное программирование
Чтобы снизить риск обращения к непреднамеренной версии теневой переменной, можно полностью квалифицировать все ссылки на теневую переменную. Тень представляет несколько версий переменной с одинаковым именем. Если инструкция кода ссылается на имя переменной, версия, к которой компилятор разрешает эту ссылку, зависит от таких факторов, как расположение инструкции кода и наличие уточняющей строки. Это может увеличить риск ссылки на неправильную версию переменной.