Поделиться через


Практическое руководство. Сокрытие наследуемой переменной (Visual Basic)

Производный класс наследует все определения его базового класса.Если необходимо определить переменную с тем же именем, что у элемента базового класса, можно скрыть или затенить элемент базового класса при определении переменной в производном классе.Если это сделать, то код в производном классе получает доступ к переменной, если явно не обходится механизм затенения.

Другой причиной, по которой может потребоваться скрыть наследуемую переменную, является защита версии базового класса.Базовый класс может претерпеть изменения, которые отразятся на наследуемом элементе.В этом случае модификатор Shadows принудительно указывает на переменную из производного класса, вместо элемента базового класса.

Скрытие наследуемой переменной

  1. Убедитесь, что переменная, которую требуется скрыть, объявлена на уровне класса (вне любой процедуры).В противном случае ее скрывать необязательно.

  2. Внутри производного класса используйте Оператор Dim (Visual Basic) для объявления переменной.Используйте имя, совпадающее с именем наследуемой переменной.

  3. Включите в объявление ключевое слово Shadows (Visual Basic).

    Если код в производном классе ссылается на имя переменной, компилятор разрешает ссылку с помощью созданной таким образом переменной.

    В следующем примере показано скрытие (затенение) наследуемой переменной.

    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)

Практическое руководство. Доступ к переменной, скрытой производным классом (Visual Basic)

Ссылки

Overrides (Visual Basic)

Основные понятия

Ссылки на объявленные элементы (Visual Basic)

Сокрытие в Visual Basic

Различия между сокрытием и переопределением (Visual Basic)

Me, My, MyBase и MyClass в Visual Basic

Основы наследования (Visual Basic)