Udostępnij za pośrednictwem


Różnice między cieniowanie i przesłanianie (Visual Basic)

Po zdefiniowaniu klasy, która dziedziczy z klasy bazowej, czasami trzeba na nowo zdefiniować jeden lub więcej elementów klasy podstawowej w klasie pochodnej.Cieniowanie i nadrzędne są dostępne w tym celu.

Porównanie

Cieniowanie i przesłanianie zarówno używane podczas pochodnych klasa dziedziczy z klasy podstawowej, i zarówno ponownie zdefiniować jeden element deklarowanej na inny.Jednak istnieją znaczne różnice między tymi dwoma.

W poniższej tabeli porównano przesłanianie z przesłanianie.

Punkt Porównanie

Cieniowanie

Przesłanianie

Cel

Chroni przed kolejnych zmianach klasy base, który wprowadza członka, który już został zdefiniowany w klasie pochodnej

Osiąga polimorfizm przez definiowanie różnych realizacji procedury lub właściwości z samej sekwencja wywoływania1

Element przedefiniować

Zadeklarowany dowolny typ elementu

Tylko w procedurze (Function, Sub, lub Operator) lub właściwość

Zmiana definicji elementu

Zadeklarowany dowolny typ elementu

Tylko procedury lub właściwości z identycznych sekwencja wywoływania1

Zmiana definicji elementu poziom dostępu

Każdy poziom dostępu

Nie można zmienić poziom dostępu przesłonięte elementu

Czytelności i writability z przedefiniowanie elementu

Dowolna kombinacja

Nie można zmienić czytelności lub writability zastąpiona właściwość

Kontrola nad przedefiniowanie

Element klasy podstawowej nie można wymusić lub zakazać cieniowanie

Można określić elementu klasy podstawowej MustOverride, NotOverridable, lubOverridable

Użycie słowa kluczowego

ShadowsZaleca się w klasie pochodnej; Shadowszakłada, że jeśli ani Shadows ani Overrides określonego2

Overridablelub MustOverride wymaganych w klasie podstawowej; Overrideswymagane w klasie pochodnej

Dziedziczenie przedefiniowanie elementu przez klasy wywodzące się z klasy pochodne

Przesłanianie elementu dziedziczone przez dalsze uzyskane klas; tekst z cieniem element nadal ukryte3

Przesłanianie elementu dziedziczone przez dalsze uzyskane klas; zastąpiona element nadal jest zastąpiona

1Sekwencja wywoływania składa się z typu elementu (Function, Sub, Operator, lub Property), nazwa, lista parametrów i zwraca typ.Nie można zastąpić procedurę z właściwością lub na odwrót.Nie można zastąpić jeden rodzaj procedury (Function, Sub, lub Operator) z innego rodzaju.

2 , Jeśli nie określisz albo Shadows lub Overrides, kompilator generuje ostrzeżenie, aby pomóc Ci się, jakiego rodzaju dokonanym chcesz użyć.Jeśli możesz zignorować ostrzeżenie, używany jest mechanizm przesłaniania.

3 , Jeśli element przesłaniania jest niedostępne w klasie pochodnej dalsze, cieniowanie nie jest dziedziczona.Na przykład zadeklarować przesłaniania element jako Private, wynikające z Klasa pochodna klasy dziedziczy oryginalnego elementu zamiast elementu przesłaniania.

Wytyczne

Zwykle korzystasz, zastępując w następujących przypadkach:

  • Podczas definiowania polimorficzne klas pochodnych.

  • Chcesz bezpieczeństwa mających kompilatora, wymuszanie typu elementu identyczne i sekwencja wywoływania.

Zwykle korzystasz, cieniowanie w następujących przypadkach:

  • Przewidywania, że klasy podstawowej mogą być modyfikowane i zdefiniować element przy użyciu tej samej nazwie jak Twój.

  • Mają swobodę zmiany typu element lub sekwencja wywoływania.

Zobacz też

Zadania

Jak: ukrywanie zmiennej z taką samą nazwę jak zmienna (Visual Basic)

Jak: ukrywanie zmiennej dziedziczone (Visual Basic)

Jak: dostęp do zmiennej ukryte w klasie pochodnej (Visual Basic)

Informacje

Cienie (Visual Basic)

Zastępuje (Visual Basic)

Koncepcje

Odniesienia do zadeklarowanych elementów (Visual Basic)

Cieniowanie w języku Visual Basic