Porady: ukrywanie dziedziczonej zmiennej (Visual Basic)
Klasa pochodna dziedziczy wszystkie definicje swojej klasy bazowej. Jeśli chcesz zdefiniować zmienną o tej samej nazwie co element klasy bazowej, możesz ukryć lub ukryć ten element klasy bazowej podczas definiowania zmiennej w klasie pochodnej. W takim przypadku kod w klasie pochodnej uzyskuje dostęp do zmiennej, chyba że jawnie pomija mechanizm cieniowania.
Innym powodem, dla którego można ukryć dziedziczona zmienną, jest ochrona przed poprawką klasy bazowej. Klasa bazowa może przejść zmianę, która zmienia dziedziczony element. W takim przypadku Shadows
modyfikator wymusza odwołania z klasy pochodnej, które mają zostać rozpoznane w zmiennej, zamiast do elementu klasy bazowej.
Aby ukryć dziedziczona zmienną
Upewnij się, że zmienna, którą chcesz ukryć, jest zadeklarowana na poziomie klasy (poza dowolną procedurą). W przeciwnym razie nie trzeba go ukrywać.
Wewnątrz klasy pochodnej napisz instrukcję Dim deklarując zmienną. Użyj tej samej nazwy co dziedziczona zmienna.
Dołącz słowo kluczowe Shadows do deklaracji .
Gdy kod w klasie pochodnej odwołuje się do nazwy zmiennej, kompilator rozpoznaje odwołanie do zmiennej.
Poniższy przykład ilustruje cieniowanie dziedziczonej zmiennej:
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 w tle wersję ciągu, gdy nazwashadowString
nie jest kwalifikowana. Następnie wyświetla wersję w tle, gdyshadowString
jest kwalifikowana za pomocą słowa kluczowegoMyBase
.
Niezawodne programowanie
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 niezamierzonej wersji zmiennej w tle. To ryzyko można zmniejszyć, w pełni kwalifikując wszystkie odwołania do zmiennej w tle.
Zobacz też
- Odwołania do elementów zadeklarowanych
- Cieniowanie w Visual Basic
- Różnice między przesłanianiem i zastępowaniem
- Instrukcje: ukrywanie zmiennej o tej samej nazwie jako zmiennej użytkownika
- Instrukcje: dostęp do zmiennej ukrytej przez klasę pochodną
- Overrides
- Me, My, MyBase i MyClass
- Podstawowe informacje o dziedziczeniu