डिफ़ॉल्ट इंटरफ़ेस कार्यान्वयन का अन्वेषण करें

Complete

डिफ़ॉल्ट इंटरफ़ेस कार्यान्वयन आपको सीधे इंटरफ़ेस में नई विधियाँ जोड़ने और डिफ़ॉल्ट कार्यान्वयन प्रदान करने में सक्षम बनाता है. एक वर्ग जो इस इंटरफ़ेस का उपयोग करता है, या तो डिफ़ॉल्ट विधि का उपयोग कर सकता है, या यह ओवरराइड कर सकता है और अपना कार्यान्वयन प्रदान कर सकता है।

डिफ़ॉल्ट कार्यान्वयन

इंटरफ़ेस में डिफ़ॉल्ट कार्यान्वयन आपको समस्याओं के बिना इंटरफ़ेस में नई विधियाँ जोड़ने देता है.

  • एक इंटरफ़ेस डिफ़ॉल्ट कार्यान्वयन का उपयोग करके अपने तरीकों के लिए एक निकाय प्रदान कर सकता है।
  • इंटरफ़ेस का उपयोग करने वाली कक्षाओं को इन विधियों के अपने संस्करण लिखने की आवश्यकता नहीं है।
  • यह सुविधा तब मदद करती है जब आप बिना कुछ तोड़े इंटरफ़ेस बदलना चाहते हैं।

नोट

डिफ़ॉल्ट कार्यान्वयन के साथ भी, एक वर्ग स्वचालित रूप से इंटरफ़ेस के तरीकों को प्राप्त नहीं करता है। इंटरफ़ेस से एक विधि का उपयोग करने के लिए, चर इंटरफ़ेस प्रकार का होना चाहिए।

लाभ

इंटरफेस में डिफ़ॉल्ट कार्यान्वयन के कई लाभ हैं:

  • कोड पुन: उपयोग: आप कोड कॉपी किए बिना विभिन्न कार्यान्वयनों में सामान्य फ़ंक्शन साझा कर सकते हैं।
  • पश्चगामी संगतता: आप परिवर्तनों को तोड़ने से रोकने के लिए इंटरफ़ेस का उपयोग करके सभी वर्गों को बदले बिना इंटरफेस में नए तरीके जोड़ सकते हैं।
  • लचीलापन: इंटरफ़ेस का उपयोग करने वाली कक्षाएं डिफ़ॉल्ट कार्यान्वयन को बदल सकती हैं यदि उन्हें अलग-अलग व्यवहार की आवश्यकता होती है।

उदाहरण के लिए, मान लें कि आप ग्राहक प्रबंधन प्रणाली के साथ काम कर रहे हैं और आप मौजूदा इंटरफ़ेस में लॉयल्टी छूट लागू करने के लिए एक नई विधि जोड़ते हैं। डिफ़ॉल्ट विधि मूल छूट की गणना करती है। लेकिन अगर "वीआईपी ग्राहक" वर्ग को एक अलग गणना की आवश्यकता है, तो यह इस पद्धति को संशोधित कर सकता है।

डिफ़ॉल्ट कार्यान्वयन निर्धारित करें

इंटरफेस में डिफ़ॉल्ट कार्यान्वयन को परिभाषित करने के लिए सिंटैक्स विधि निकायों को शामिल करने के लिए इंटरफ़ेस घोषणा का विस्तार करता है। निम्न उदाहरण ग्राहक प्रबंधन सिस्टम परिदृश्य पर आधारित इंटरफ़ेस में डिफ़ॉल्ट कार्यान्वयन को परिभाषित करता है:

interface ICustomer
{
    int CustomerId { get; set; } // No default implementation

    void ApplyLoyaltyDiscount() 
    { 
        // default implementation
        Console.WriteLine("Applying 10% loyalty discount."); 
    }
}

इस उदाहरण में, विधि इंटरफ़ेस के ApplyLoyaltyDiscount भीतर एक डिफ़ॉल्ट कार्यान्वयन है ICustomer । प्रॉपर्टी को CustomerId इंटरफ़ेस में भी परिभाषित किया गया है, लेकिन इसमें डिफ़ॉल्ट कार्यान्वयन नहीं है।

नोट

सी # 8.0 के बाद से, इंटरफेस में डिफ़ॉल्ट विधि कार्यान्वयन शामिल हो सकते हैं। परिवर्तन मौजूदा कोड को तोड़ने के बिना इंटरफेस में नए तरीकों को जोड़ने की अनुमति देता है। कक्षाएं इन डिफ़ॉल्ट का उपयोग कर सकती हैं या अपने स्वयं के कार्यान्वयन प्रदान कर सकती हैं।

अगला, एक "VIPCustomer" वर्ग लागू करें जिसे एक अलग छूट गणना की आवश्यकता है। यह वर्ग इंटरफ़ेस को लागू कर सकता है ICustomer , संपत्ति के लिए अपना कार्यान्वयन प्रदान कर सकता है CustomerId , और इस तरह की विधि को ओवरराइड कर ApplyLoyaltyDiscount सकता है:

class VIPCustomer : ICustomer
{
    public int CustomerId { get; set; } // Implementing property from interface

    void ICustomer.ApplyLoyaltyDiscount()
    {
        // override default implementation for VIP customers
        Console.WriteLine($"Applying 20% loyalty discount for VIP customer with ID {CustomerId}.");
    }
}

इस स्थिति में, VIPCustomer वर्ग डिफ़ॉल्ट 10%के बजाय 20% छूट लागू करता है। CustomerId छूट लागू करते समय संदेश में इसका उपयोग किया जाता है।

इंटरफेस में डिफ़ॉल्ट कार्यान्वयन इंटरफ़ेस में प्रदान की गई विधि कार्यान्वयन के साथ नए तरीकों को जोड़ने की अनुमति देता है। डिफ़ॉल्ट कार्यान्वयन कोड पुन: उपयोग, पश्चगामी संगतता और लचीलेपन को बढ़ावा देते हैं। यह सी # Object-Oriented प्रोग्रामिंग में एक व्यावहारिक उपकरण है जो मौजूदा कोड को बाधित किए बिना अनुकूलन क्षमता को बढ़ाता है।