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