C# अकादमी · पाठ

virtual/override/sealed; abstract classes

virtual methods, overriding, overrides को sealed करना और abstract classes सीखिए; देखिए कि base references derived implementations को कैसे dispatch करते हैं।

पाठ 1, कुल 3 में से8 चरण

virtual/override/sealed; abstract classes, CoddyKit पर C# अकादमी का एक निःशुल्क पाठ है। यह 3 में से 1वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह C# अकादमी सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। C# अकादमी पाठ्यक्रम में कुल 3 पाठ शामिल हैं।

इनहेरिटेंस की मूल बातें

लक्ष्य: इनहेरिटेंस के ज़रिए व्यवहार का पुनः उपयोग और अनुकूलन करें।

  • आधार में virtual
  • व्युत्पन्न में override
  • आगे के बदलाव रोकने के लिए sealed override
  • abstract क्लास एक अनुबंध और साझा कोड परिभाषित करती है

virtual और override

virtual ओवरराइड करने की सुविधा देता है। आधार reference के ज़रिए की गई कॉल व्युत्पन्न override का उपयोग करती है (डायनेमिक डिस्पैच)।

using System;

// Base method is virtual so derived classes can customize it
public class Shape
{
  public virtual double Area()
  {
    return 0.0; // default
  }
}

public class Rectangle : Shape
{
  public int Width { get; private set; }
  public int Height { get; private set; }

  public Rectangle(int w, int h)
  {
    Width = w; Height = h;
  }

  public override double Area()
  {
    return Width * Height;
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    Shape s = new Shape();
    Shape r = new Rectangle(3, 4); // base reference
    Console.WriteLine("Shape area = " + s.Area());
    Console.WriteLine("Rectangle area = " + r.Area()); // calls Rectangle.Area()
  }
}

sealed override

पदानुक्रम के किसी निश्चित स्तर पर विधि को लॉक करने के लिए sealed override का उपयोग करें।

using System;

public class BaseLogger
{
  public virtual string Prefix()
  {
    return "[LOG]";
  }
}

public class ConsoleLogger : BaseLogger
{
  public sealed override string Prefix()
  {
    return "[CONSOLE]";
  }
}

// Further derived class cannot override Prefix again:
// public class FancyLogger : ConsoleLogger
// {
//   public override string Prefix() { return "[FANCY]"; } // compile error
// }

public class Program
{
  public static void Main(string[] args)
  {
    ConsoleLogger log = new ConsoleLogger();
    Console.WriteLine(log.Prefix() + " Ready");
  }
}

Abstract क्लासें

Abstract क्लासें आवश्यक सदस्यों (abstract) को परिभाषित करती हैं और साझा कोड भी उपलब्ध करा सकती हैं।

using System;

// Abstract class: cannot be instantiated; must implement abstract members
public abstract class Animal
{
  public abstract string Speak(); // no body here
  public string Info()
  {
    return "Animal says: " + Speak(); // shared code uses the abstract member
  }
}

public class Dog : Animal
{
  public override string Speak()
  {
    return "Woof";
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    // Animal a = new Animal(); // compile error: abstract
    Animal d = new Dog();
    Console.WriteLine(d.Info()); // calls Dog.Speak()
  }
}

virtual बनाम abstract

चुनें:

  • virtual: एक डिफ़ॉल्ट बॉडी दें, जिसे व्युत्पन्न प्रकार override कर सकते हैं।
  • abstract: कोई बॉडी नहीं; व्युत्पन्न प्रकारों को इसे अवश्य लागू करना होगा।
  • sealed override: व्यवहार निश्चित हो जाने के बाद आगे के override रोक दें।

बहुरूपी कॉल

बहुरूपता: एक विधि आधार प्रकार स्वीकार करती है और व्युत्पन्न इंस्टेंस पर override किए गए सदस्यों को कॉल करती है।

using System;

public class Notifier
{
  public virtual string Channel() { return "Base"; }
}

public class EmailNotifier : Notifier
{
  public override string Channel() { return "Email"; }
}

public class SmsNotifier : Notifier
{
  public override string Channel() { return "SMS"; }
}

public class Program
{
  // Works with any Notifier (polymorphism)
  static void Send(Notifier n, string msg)
  {
    Console.WriteLine("[" + n.Channel() + "] " + msg);
  }

  public static void Main(string[] args)
  {
    Send(new EmailNotifier(), "Hello");
    Send(new SmsNotifier(), "Hi");
  }
}

virtual/override/sealed नियम

त्वरित जाँच: C# में virtual, override और sealed के बारे में कौन-सा कथन सही है?

पुनरावृत्ति

पुनरावृत्ति: आधार विधियों को virtual चिह्नित करें, व्युत्पन्न प्रकारों में override करें और व्यवहार को लॉक करने के लिए sealed override का उपयोग करें। कार्यान्वयन आवश्यक करने और सामान्य कोड साझा करने के लिए abstract क्लासों का उपयोग करें।

शुरुआत निःशुल्क

एआई शिक्षक के साथ C# सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
93
पाठ
346

अक्सर पूछे जाने वाले प्रश्न

क्या “virtual/override/sealed; abstract classes” पाठ निःशुल्क है?

हाँ—“virtual/override/sealed; abstract classes” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और C# अकादमी पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। C# अकादमी पाठ्यक्रम में कुल 3 पाठ शामिल हैं।

“virtual/override/sealed; abstract classes” में मैं क्या सीखूँगा?

virtual methods, overriding, overrides को sealed करना और abstract classes सीखिए; देखिए कि base references derived implementations को कैसे dispatch करते हैं। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ C# अकादमी का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या C# अकादमी शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर C# अकादमी शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 3 में से 1वाँ पाठ है।

“virtual/override/sealed; abstract classes” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस C# अकादमी पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर C# अकादमी पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. virtual/override/sealed; abstract classes
  2. Interfaces (परिचय) और कई interface लागू करना
  3. Polymorphism और dynamic dispatch
← C# अकादमी पर वापस जाएँ