Sdílet prostřednictvím


Postupy: Skrytí zděděné proměnné (Visual Basic)

Odvozená třída dědí všechny definice své základní třídy. Chcete-li definovat proměnnou se stejným názvem jako prvek základní třídy, můžete skrýt nebo stín tento element základní třídy při definování proměnné v odvozené třídě. Pokud to uděláte, kód v odvozené třídě přistupuje k proměnné, pokud explicitně neprojde mechanismem stínování.

Dalším důvodem, proč byste mohli chtít skrýt zděděnou proměnnou, je chránit před revizí základní třídy. Základní třída může projít změnou prvku, který dědíte. Pokud k tomu dojde, Shadows modifikátor vynutí odkazy z odvozené třídy, aby se přeložily na vaši proměnnou namísto elementu základní třídy.

Skrytí zděděné proměnné

  1. Ujistěte se, že proměnná, kterou chcete skrýt, je deklarována na úrovni třídy (mimo jakoukoli proceduru). Jinak ho nemusíte skrýt.

  2. Uvnitř odvozené třídy napište příkaz Dim deklarující proměnnou. Použijte stejný název jako zděděná proměnná.

  3. Do deklarace zahrňte klíčové slovo Shadows.

    Pokud kód v odvozené třídě odkazuje na název proměnné, kompilátor přeloží odkaz na vaši proměnnou.

    Následující příklad znázorňuje stínování zděděné proměnné:

    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  
    

    Předchozí příklad deklaruje proměnnou shadowString v základní třídě a stínuje ji v odvozené třídě. Procedura ShowStrings v odvozené třídě zobrazí stínovací verzi řetězce, pokud název shadowString není kvalifikovaný. Potom zobrazí stínovou verzi, pokud shadowString je kvalifikována pomocí klíčového MyBase slova.

Robustní programování

Stínování zavádí více než jednu verzi proměnné se stejným názvem. Pokud příkaz kódu odkazuje na název proměnné, verze, na kterou kompilátor přeloží odkaz, závisí na faktorech, jako je umístění příkazu kódu a přítomnost opravňujícího řetězce. To může zvýšit riziko odkazování na nezamýšlenou verzi stínované proměnné. Toto riziko můžete snížit tak, že plně opravníte všechny odkazy na stínovanou proměnnou.

Viz také