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


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

Обновлен: Ноябрь 2007

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

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

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

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

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

  3. Вставьте ключевое слово 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.

Отказоустойчивость

Затенение позволяет давать одно и то же имя нескольким переменным. Если оператор в коде ссылается на имя переменной, то версия переменной, с помощью которой компилятор разрешает ссылку, зависит от таких факторов, как расположение оператора и наличие строки квалификации. Это может повысить риск обращения к непредусмотренной версии затеняемой переменной. Снизить этот риск можно путем полной квалификации всех обращений к затеняемой переменной.

См. также

Задачи

Практическое руководство. Различение двух элементов с одинаковыми именами

Практическое руководство. Сокрытие переменной с тем же именем, что и ваша переменная

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

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

Разрешение ссылки, когда несколько переменных имеют одинаковые имена

Сокрытие в Visual Basic

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

Ссылки

Overrides

Другие ресурсы

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