Rozdíly mezi stínování a přepsání (Visual Basic)
Při definování třídy, která dědí ze základní třídy někdy chcete předefinovat jeden nebo více prvků základní třídy v odvozené třídě.Stínování a přepsání jsou k dispozici pro tento účel.
Porovnání
Stínování a potlačení se obě používají odvozená třída dědí ze základní třídy a i jeden element deklarovaný jiným předefinovat.Ale existují významné rozdíly mezi nimi.
Následující tabulka porovnává s přepsání stínování.
Bod porovnání |
Stínový provoz |
Přepsání |
Účel |
Chrání proti následné změny základní třída, která zavádí člen, který jste již definovali v odvozené třídě |
Polymorfismus dosahuje definováním různých provádění postupu nebo vlastnosti s stejné volací posloupnost1 |
Předefinovaná prvek |
Žádné deklarovaný typ prvku |
Pouze postup (Function, Sub, nebo Operator) nebo vlastnosti |
Předefinování prvek |
Žádné deklarovaný typ prvku |
Pouze postup nebo vlastnosti s identické volací posloupnost1 |
Předefinování prvek úroveň přístupu |
Libovolnou úroveň přístupu |
Nelze změnit úroveň přístupu Potlačené prvku |
Čitelnost a writability o předefinování prvek |
Libovolná kombinace |
Čitelnost nebo writability přepsaná vlastnost nelze změnit |
Kontrolu nad předefinování |
Základní třídou prvku nelze vynutit nebo zakázat stínování |
Můžete určit základní třídou prvku MustOverride, NotOverridable, neboOverridable |
Použití klíčového slova |
Shadowsv odvozené třídě; Shadowspředpokládá se, že ani Shadows ani Overrides zadané2 |
Overridablenebo MustOverride v základní třídě.; Overridesv odvozené třídě |
Dědičnost předefinování prvek podle třídy odvozené od odvozené třídy |
Stínový provoz prvek děděna dále odvozených tříd; Stínovaný prvek i nadále skryté3 |
Potlačení prvek děděna dále odvozených tříd; Potlačená prvek stále přepsána. |
1Volání sekvence se skládá z typu prvku (Function, Sub, Operator, nebo Property), název, seznam parametrů a vracet typ.Postup s vlastnost nebo jiným způsobem kolem nelze přepsat.Nelze přepsat jeden druh postup (Function, Sub, nebo Operator) s jiného druhu.
2 Pokud nezadáte buď Shadows nebo Overrides, kompilátor problémy upozornění vám být jisti, jaký druh předefinováním, kterou chcete použít.Pokud upozornění ignorovat, bude použita stínového provozu mechanismu.
3 Pokud stínového provozu prvku je dále odvozené třídy nepřístupné, stínový provoz nejsou děděna.Pokud deklarujete stínového provozu prvku jako například Private, vyplývající z odvozené třídy třída dědí původní prvek namísto stínového provozu prvku.
Pokyny
Běžně používáte přepsání v následujících případech:
Definování polymorfní odvozené třídy.
Chcete, aby bezpečnost s kompilátor vynutit typ prvku identické a volací posloupnost.
Běžně používáte stínový provoz v následujících případech:
Předpokládáte, že základní třídy mohou být změněna a definovat pomocí stejného názvu se nenachází žádný jiný prvek.
Chcete svobody Změna typu prvku nebo volací posloupnost.
Viz také
Úkoly
Postup: skrytí proměnné se stejným názvem jako proměnné (Visual Basic)
Postup: skrytí zděděné proměnné (Visual Basic)
Jak: přístup k proměnné skryté odvozené třídy (Visual Basic)