Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Gdy kod w klasie pochodnej uzyskuje dostęp do zmiennej, kompilator zwykle rozpoznaje odwołanie do najbliższej dostępnej wersji, czyli tej wersji, która wymaga najmniejszej liczby kroków wstecz w hierarchii klas od klasy uzyskującej dostęp. Jeśli zmienna jest zdefiniowana w klasie pochodnej, kod zwykle uzyskuje dostęp do tej definicji.
Jeśli zmienna klasy pochodnej przesłania zmienną w klasie bazowej, ukrywa zmienną wersję klasy bazowej. Można jednak uzyskać dostęp do zmiennej klasy bazowej, kwalifikując ją za pomocą słowa kluczowego MyBase
.
Aby uzyskać dostęp do zmiennej klasy bazowej ukrytej przez klasę pochodną
W instrukcji wyrażenia lub przypisania poprzedzić nazwę zmiennej
MyBase
słowem kluczowym i kropką (.
).Kompilator rozpoznaje odwołanie do wersji klasy bazowej zmiennej.
Poniższy przykład ilustruje cieniowanie przez dziedziczenie. Tworzy dwa odwołania, jedno, które uzyskuje dostęp do zmiennej przesłaniającej i jedno, które pomija przesłanianie.
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
Powyższy przykład deklaruje zmienną
shadowString
w klasie bazowej i cieniuje ją w klasie pochodnej. ProcedurashowStrings
w klasie pochodnej wyświetla wersję cienującą tego ciągu, gdy nazwashadowString
nie jest w pełni określona. Następnie wyświetla zacienioną wersję, gdyshadowString
jest kwalifikowany za pomocą słowa kluczowegoMyBase
.
Niezawodne programowanie
Aby zmniejszyć ryzyko odwoływania się do niezamierzonej wersji zmiennej w tle, można w pełni zakwalifikować wszystkie odwołania do zmiennej w tle. Funkcja cieniowania wprowadza więcej niż jedną wersję zmiennej o tej samej nazwie. Gdy instrukcja kodu odwołuje się do nazwy zmiennej, wersja, do której kompilator rozpoznaje odwołanie, zależy od czynników, takich jak lokalizacja instrukcji kodu i obecność ciągu kwalifikującego. Może to zwiększyć ryzyko odwoływania się do niewłaściwej wersji zmiennej.