Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz 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
MyBasesł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 ClassPowyższy przykład deklaruje zmienną
shadowStringw klasie bazowej i cieniuje ją w klasie pochodnej. ProcedurashowStringsw klasie pochodnej wyświetla wersję cienującą tego ciągu, gdy nazwashadowStringnie jest w pełni określona. Następnie wyświetla zacienioną wersję, gdyshadowStringjest 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.