Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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 vaší proměnné, pokud explicitně neobejde mechanismus 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é
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.
Uvnitř odvozené třídy napište příkaz Dim deklarující proměnnou. Použijte stejný název jako zděděná proměnná.
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 ClassPředchozí příklad deklaruje proměnnou
shadowStringv základní třídě a stínuje ji v odvozené třídě. ProceduraShowStringsv odvozené třídě zobrazí stínovací verzi řetězce, pokud názevshadowStringnení kvalifikovaný. Potom zobrazí stínovou verzi, pokudshadowStringje kvalifikována pomocí klíčovéhoMyBaseslova.
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 tím, že plně specifikujete všechny reference na stínovanou proměnnou.