Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Производный класс наследует все определения базового класса. Если вы хотите определить переменную, используя то же имя, что и элемент базового класса, можно скрыть или потенить этот элемент базового класса при определении переменной в производном классе. Если вы это сделаете, код в производном классе будет обращаться к вашей переменной, если только она не обходит механизм теневания.
Другая причина, по которой может потребоваться скрыть унаследованную переменную, заключается в защите от редакции базового класса. Базовый класс может пройти изменение, которое изменяет наследуемый элемент. Если это происходит, модификатор 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.
Надежное программирование
Тень представляет несколько версий переменной с одинаковым именем. Если инструкция кода ссылается на имя переменной, версия, к которой компилятор разрешает эту ссылку, зависит от таких факторов, как расположение инструкции кода и наличие уточняющей строки. Это может увеличить риск обращения к непреднамеренной версии теневой переменной. Вы можете снизить этот риск, полностью квалифицируя все ссылки на теневую переменную.