मेथड हाइडिंग को C# में शैडोइंग भी कहा जाता है।
ओवरराइडिंग (Overriding)
- बेस क्लास मेथड
virtual,abstract, याoverrideहोना चाहिए - डेराइव्ड क्लास
overrideकीवर्ड का उपयोग करती है - पॉलीमॉर्फिक व्यवहार - रनटाइम पर वास्तविक ऑब्जेक्ट टाइप के आधार पर मेथड चुना जाता है
base.MethodName()द्वारा बेस मेथड एक्सेस योग्य
हाइडिंग/शैडोइंग (Hiding/Shadowing)
- बेस क्लास मेथड को किसी विशेष कीवर्ड की आवश्यकता नहीं
- डेराइव्ड क्लास
newकीवर्ड का उपयोग करती है (चेतावनी दबाने के लिए) - गैर-पॉलीमॉर्फिक - कंपाइल-टाइम टाइप के आधार पर मेथड चुना जाता है
- बेस मेथड डेराइव्ड क्लास रेफरेंस के माध्यम से सीधे एक्सेस योग्य नहीं
उदाहरण
class Base {
public virtual void Show() { Console.WriteLine("Base Show"); }
public void Display() { Console.WriteLine("Base Display"); }
}
class Derived : Base {
public override void Show() { Console.WriteLine("Derived Show"); }
public new void Display() { Console.WriteLine("Derived Display"); }
}
// उपयोग:
Base obj = new Derived();
obj.Show(); // Derived Show (पॉलीमॉर्फिज्म)
obj.Display(); // Base Display (हाइडिंग - कंपाइल टाइम टाइप Base है)
Derived d = new Derived();
d.Show(); // Derived Show
d.Display(); // Derived Display
मुख्य अंतर तालिका
| विशेषता | ओवरराइडिंग | हाइडिंग (शैडोइंग) |
|---|---|---|
| कीवर्ड | override | new (वैकल्पिक लेकिन अनुशंसित) |
| बेस मेथड आवश्यकता | virtual/abstract/override | कोई भी मेथड |
| पॉलीमॉर्फिज्म | हां | नहीं |
| बेस एक्सेस | base.Method() | ((Base)derived).Method() |
| उद्देश्य | व्यवहार विस्तार/बदलना | नाम टकराव हल करना |