Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# में ओवरराइडिंग और हाइडिंग में अंतर

मेथड हाइडिंग को 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

मुख्य अंतर तालिका

विशेषताओवरराइडिंगहाइडिंग (शैडोइंग)
कीवर्डoverridenew (वैकल्पिक लेकिन अनुशंसित)
बेस मेथड आवश्यकताvirtual/abstract/overrideकोई भी मेथड
पॉलीमॉर्फिज्महांनहीं
बेस एक्सेसbase.Method()((Base)derived).Method()
उद्देश्यव्यवहार विस्तार/बदलनानाम टकराव हल करना
  1. - C# में फंक्शन ओवरराइडिंग और मेथड हाइडिंग में क्या अंतर है?

    ओवरराइडिंगओवरराइडिंग के तहत, आप एक व्यवहार को परिभाषित कर सकते हैं जो सबक्लास टाइप के लिए विशिष्ट है, जिसका अर्थ है कि एक सबक्लास अपनी आवश्यकता के आधार पर पैरेंट क्लास मेथड को लागू कर सकता है।आइए एब्स्ट्रैक्ट क्लासेस का एक उदाहरण देखें जो ओवरराइडिंग को लागू करता है:उदाहरणusing System; namespace Poly

  1. - C# में क्लास और ऑब्जेक्ट के बीच अंतर

    जब आप एक क्लास डिफाइन करते हैं, तो आप एक डेटा टाइप के लिए ब्लूप्रिंट डिफाइन करते हैं। ऑब्जेक्ट्स क्लास के इंस्टेंसेस हैं। मेथड्स और वेरिएबल्स जो एक क्लास का गठन करते हैं, उन्हें क्लास के मेंबर्स कहा जाता है। क्लास मेंबर्स तक पहुंचने के लिए, आप ऑब्जेक्ट नाम के बाद डॉट (.) ऑपरेटर का उपयोग करते हैं। डॉ

  1. - पायथन सेट पर ऑपरेटर और मेथड में क्या अंतर है?

    पायथन का सेट ऑब्जेक्ट बिल्ट-इन सेट क्लास को दर्शाता है। यूनियन, इंटरसेक्शन, डिफरेंस और सिमेट्रिक डिफरेंस जैसे विभिन्न सेट ऑपरेशन को संबंधित मेथड को कॉल करके या ऑपरेटर का उपयोग करके किया जा सकता है। मेथड द्वारा यूनियन >>> s1={1,2,3,4,5} >>> s2={4,5,6,7,8} >>> s1.union(s2)