|
What is the difference between Overriding and Shadowing?
Both Overriding and Shadowing are ways to alter the behaviour of members of a base class.
Shadowing is a VB.NET concept. In C#, this concept is called Hiding, though there is a difference
between the two.
When we do shadowing, we provide a new implementation to the base class member
without overriding it. We may shadow a base class member in a derived class, by using
the keyword shadows. The access level, return type, and the signature (means the datatypes of the
arguments passed & the order of the types) of the derived class members which are shadowed,
may differ from the base class.
In C#, we may achieve shadowing using the keyword new. However,
when Hiding in C#, the access level, the signature, return type of the derived class must be
same as the base class.
Overriding is the concept of providing a new implementation of derived class member
as compared to its based class. In VB.NET, we do overriding using the overrides keyword,
while in C#, overriding is achieved using the override keyword. For a class member
to be overridable, we use the keyword virtual while defining it (in C#), and we use
the keyword overridable (in VB.NET), though if we leave out specifying the overridable
keyword, the member is overridable by default.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| |