Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Производный класс наследует все определения базового класса. Если вы хотите определить переменную, используя то же имя, что и элемент базового класса, можно скрыть или потенить этот элемент базового класса при определении переменной в производном классе. Если это сделать, код в производном классе обращается к переменной, если она явно не проходит механизм тени.
Другая причина, по которой может потребоваться скрыть унаследованную переменную, заключается в защите от редакции базового класса. Базовый класс может пройти изменение, которое изменяет наследуемый элемент. В этом случае Shadows
модификатор принудительно ссылается на производный класс, который будет разрешен в переменную, а не на элемент базового класса.
Скрытие унаследованной переменной
Убедитесь, что переменная, которую нужно скрыть, объявлена на уровне класса (вне любой процедуры). В противном случае не нужно скрывать его.
В производном классе напишите оператор Dim, объявляющий переменную. Используйте то же имя, что и унаследованная переменная.
Включите ключевое слово тени в объявлении.
Если код в производном классе ссылается на имя переменной, компилятор разрешает ссылку на переменную.
В следующем примере показано тени унаследованной переменной:
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
помощью ключевое слово.
Отказоустойчивость
Тень представляет несколько версий переменной с одинаковым именем. Если оператор кода ссылается на имя переменной, версия, к которой компилятор разрешает ссылку, зависит от таких факторов, как расположение инструкции кода и наличие соответствующей строки. Это может увеличить риск обращения к непреднамеренной версии теневой переменной. Вы можете снизить этот риск, полностью квалифицируя все ссылки на теневую переменную.
См. также
- Ссылки на объявленные элементы
- Тени в Visual Basic
- Различия между затемнением и переопределением
- Практическое руководство. Сокрытие переменной с тем же именем, что и ваша переменная
- Практическое руководство. Доступ к переменной, скрытой производным классом
- Переопределения
- Me, My, MyBase и MyClass
- Основы наследования