Sdílet prostřednictvím


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)

Referenční dokumentace

Stíny (Visual Basic)

Přepíše (Visual Basic)

Koncepty

Odkazy na prvky deklarované (Visual Basic)

Stínový provoz v jazyce Visual Basic