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