In 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.
http://kalitinterviewquestions.blogspot.com/