C# में सार वर्ग बनाम इंटरफ़ेस: अंतर और तुलना

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

चाबी छीन लेना

  1. सार वर्ग एक ऐसा वर्ग है जिसे त्वरित नहीं किया जा सकता है और इसमें अमूर्त और गैर-सार दोनों तरीके हो सकते हैं।
  2. इंटरफ़ेस एक क्लास के लिए एक ब्लूप्रिंट है और इसमें केवल अमूर्त तरीके हो सकते हैं।
  3. एक वर्ग केवल एक अमूर्त वर्ग को प्राप्त कर सकता है लेकिन कई इंटरफेस लागू कर सकता है।

C# में सार वर्ग बनाम इंटरफ़ेस

In गति, C# में इंटरफ़ेस की तुलना में एब्सट्रैक्ट क्लास तेज़ है। पूर्व में, आप फ़ील्ड्स को परिभाषित कर सकते हैं, जबकि इंटरफ़ेस में आप नहीं कर सकते। एक एकल अमूर्त वर्ग केवल एक इंटरफ़ेस का विस्तार कर सकता है, जबकि एक इंटरफ़ेस कई इंटरफ़ेस का विस्तार कर सकता है। पहले में डेटा सदस्य होते हैं, जबकि दूसरे में नहीं।

सी में सार वर्ग बनाम इंटरफ़ेस

एक अमूर्त वर्ग में एकाधिक वंशानुक्रम संभव नहीं हैं, जबकि एक इंटरफ़ेस एकाधिक वंशानुक्रम को यथासंभव संभव बना सकता है।

तुलना तालिका

Featureसार वर्गइंटरफेस
परिभाषाअमूर्त विधियों वाला एक वर्ग जो आंशिक कार्यान्वयन प्रदान करता है और शेष विधियों को लागू करने के लिए उपवर्गों को बाध्य करता हैएक अनुबंध जिसमें केवल विधि और संपत्ति की घोषणाएं हैं लेकिन कोई कार्यान्वयन नहीं है
उद्देश्यउपवर्गों के लिए एक सामान्य आधार को परिभाषित करने और विशिष्ट कार्यक्षमता को लागू करने के लिए उपयोग किया जाता हैएक अनुबंध को परिभाषित करने के लिए उपयोग किया जाता है जिसे विभिन्न वर्ग लागू कर सकते हैं, कोड के पुन: उपयोग और लचीलेपन को बढ़ावा दे सकते हैं
कार्यान्वयनइसमें फ़ील्ड, गुण, कंस्ट्रक्टर, अमूर्त विधियाँ और ठोस विधियाँ हो सकती हैंकेवल गुण, विधियाँ और घटनाएँ हो सकती हैं
विरासतएक वर्ग केवल एक अमूर्त वर्ग से विरासत में मिल सकता हैएक वर्ग कई इंटरफेस को लागू कर सकता है
एक्सेस संशोधकसार विधियों में कोई भी एक्सेस संशोधक हो सकता है (सार्वजनिक, संरक्षित, निजी)इंटरफ़ेस में विधियाँ और गुण पूरी तरह से सार्वजनिक हैं
तात्कालिकतासार कक्षाओं को सीधे प्रारंभ नहीं किया जा सकताइंटरफ़ेस को सीधे इंस्टेंटियेट नहीं किया जा सकता
अमूर्त स्तरइंटरफ़ेस की तुलना में अधिक संपूर्ण कार्यान्वयन प्रदान कर सकता हैअमूर्त वर्ग की तुलना में कम विशिष्ट अनुबंध प्रदान करता है
उदाहरणपशु (अमूर्त वर्ग) अमूर्त विधियों के साथ मूव() और ईट()कैलकुलेटएरिया() और कैलकुलेटपेरीमीटर() विधियों के साथ IShape (इंटरफ़ेस)

C# में एब्सट्रैक्ट क्लास क्या है?

C# में एक अमूर्त वर्ग एक आंशिक रूप से कार्यान्वित वर्ग है जो उपवर्गों को प्राप्त करने के लिए एक ब्लूप्रिंट के रूप में कार्य करता है। यह संबंधित वर्गों के लिए एक सामान्य आधार को परिभाषित करता है और अमूर्त तरीकों के माध्यम से विशिष्ट कार्यक्षमता को लागू करता है, जबकि उपवर्गों को अन्य कार्यात्मकताओं के लिए अपने स्वयं के कार्यान्वयन प्रदान करने की अनुमति देता है।

यहां इसकी प्रमुख विशेषताओं का विवरण दिया गया है:

परिभाषा:

  • एक वर्ग जिसे अन्य वर्गों से विरासत में प्राप्त करने के लिए डिज़ाइन किया गया है।
  • बिना किसी कार्यान्वयन के कम से कम एक अमूर्त विधि शामिल है।
  • उपवर्गों के लिए एक सामान्य आधार और आंशिक रूप से कार्यान्वित कार्यक्षमता प्रदान करता है।
यह भी पढ़ें:  एईएस बनाम एसएचए: अंतर और तुलना

उद्देश्य:

  • उपवर्गों में विशिष्ट कार्यक्षमताओं और व्यवहारों को लागू करें।
  • संबंधित वर्गों के लिए एक सामान्य आधार प्रदान करके कोड के पुन: उपयोग को बढ़ावा देना।
  • कोड संगठन और संरचना को प्रोत्साहित करें।
  • कोड की पठनीयता और रख-रखाव में सुधार करें।

मुख्य विशेषताएं:

  • फ़ील्ड, गुण, कंस्ट्रक्टर, ठोस तरीके (कार्यान्वयन के साथ), और अमूर्त तरीके (कार्यान्वयन के बिना) हो सकते हैं।
  • सार विधियाँ उस कार्यक्षमता को परिभाषित करती हैं जिसे उपवर्गों को लागू करना होगा।
  • उपवर्ग केवल एक अमूर्त वर्ग से विरासत में मिल सकते हैं।
  • सार कक्षाओं को सीधे प्रारंभ नहीं किया जा सकता।

लाभ:

  • कोड के पुन: उपयोग को बढ़ावा देता है और कोड दोहराव को कम करता है।
  • संबंधित वर्गों में सुसंगत व्यवहार और कार्यक्षमता लागू करता है।
  • कोड संगठन और रखरखाव में सुधार करता है।
  • अमूर्त और ठोस कार्यक्षमता के बीच स्पष्ट अलगाव प्रदान करता है।

उदाहरण:

  • पशु (अमूर्त वर्ग) अमूर्त विधियों मूव() और ईट() के साथ।
  • अमूर्त विधियों कैलकुलेटएरिया() और कैलकुलेटपेरीमीटर() के साथ आकार (अमूर्त वर्ग)।

अमूर्त वर्ग का उपयोग कब करें:

  • जब आपको संबंधित वर्गों के समूह के लिए एक सामान्य आधार परिभाषित करना होगा।
  • जब आप उपवर्गों में विशिष्ट कार्यक्षमता लागू करना चाहते हैं।
  • जब आप कोड के पुन: उपयोग को प्रोत्साहित करना और कोड दोहराव को कम करना चाहते हैं।
  • जब आप अमूर्त अवधारणा को उसके ठोस कार्यान्वयन से अलग करना चाहते हैं।
अमूर्त वर्ग

C# में इंटरफ़ेस क्या है?

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

यहां इसकी प्रमुख विशेषताओं का विवरण दिया गया है:

परिभाषा:

  • एक खाका जो कार्यान्वयन प्रदान किए बिना विधियों, गुणों और घटनाओं के एक सेट को परिभाषित करता है।
  • एक अनुबंध के रूप में कार्य करता है जिसे कक्षाएं विशिष्ट कार्यात्मकताओं की गारंटी के लिए लागू कर सकती हैं।
  • कक्षाओं के बीच ढीले युग्मन को बढ़ावा देता है, जिससे उन्हें अपने आंतरिक कार्यान्वयन पर भरोसा किए बिना सहयोग करने में सक्षम बनाया जाता है।

उद्देश्य:

  • विभिन्न वर्गों द्वारा लागू की जा सकने वाली कार्यात्मकताओं के एक सामान्य सेट को परिभाषित करके कोड के पुन: उपयोग को बढ़ावा देना और रखरखाव में सुधार करना।
  • विभिन्न वर्गों के कार्यान्वयन विवरण को अलग करें, जिससे वे अधिक स्वतंत्र और लचीले बन जाएं।
  • किसी वर्ग के अपेक्षित व्यवहार का स्पष्ट और संक्षिप्त विवरण प्रदान करें।
  • समान कार्यक्षमता को अलग-अलग तरीकों से लागू करने के लिए विभिन्न कक्षाओं को सक्षम करें।

मुख्य विशेषताएं:

  • केवल विधियाँ, गुण और घटनाएँ हो सकती हैं।
  • विधियों और गुणों में कोई कार्यान्वयन विवरण नहीं होता है, जो इंटरफ़ेस को लागू करने वाले वर्गों को अपने स्वयं के कार्यान्वयन प्रदान करने के लिए मजबूर करता है।
  • इवेंट कक्षाओं को एक दूसरे के साथ संवाद करने की अनुमति देते हैं।
  • इंटरफ़ेस पूरी तरह से सार्वजनिक हैं, जिसका अर्थ है कि उनके सदस्य अन्य वर्गों के लिए पहुंच योग्य हैं।
  • एक वर्ग कई इंटरफेस लागू कर सकता है।
  • इंटरफ़ेस को सीधे इंस्टेंटियेट नहीं किया जा सकता.

लाभ:

  • कोड के पुन: उपयोग को बढ़ावा देता है और कोड दोहराव को कम करता है।
  • कोड लचीलेपन और रखरखाव में सुधार करता है।
  • ढीले युग्मन और चिंताओं के बेहतर पृथक्करण को प्रोत्साहित करता है।
  • कोड को अधिक पठनीय और समझने योग्य बनाता है।
यह भी पढ़ें:  ब्लेंडर बनाम माया: अंतर और तुलना

उदाहरण:

  • कैलकुलेटएरिया() और कैलकुलेटपेरीमीटर() विधियों के साथ IShape (इंटरफ़ेस)।
  • IComparable (इंटरफ़ेस) विधि CompareTo() के साथ।
  • ICloneable (इंटरफ़ेस) विधि Clone() के साथ।

इंटरफ़ेस का उपयोग कब करें:

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

C# में एब्सट्रैक्ट क्लास और इंटरफ़ेस के बीच मुख्य अंतर

  1. कार्यान्वयन:
    • सार वर्ग: एक अमूर्त वर्ग आंशिक रूप से या पूरी तरह से तरीकों, क्षेत्रों और गुणों को लागू कर सकता है।
    • इंटरफ़ेस: एक इंटरफ़ेस उन विधियों और गुणों के अनुबंध को परिभाषित करता है जो कार्यान्वयन कक्षाओं को प्रदान करना होगा लेकिन इसमें कोई कार्यान्वयन विवरण शामिल नहीं है।
  2. विरासत:
    • सार वर्ग: C# में एकल वंशानुक्रम का उपयोग करके एक वर्ग केवल एक सार वर्ग से प्राप्त कर सकता है।
    • इंटरफ़ेस: एक वर्ग एकाधिक इंटरफ़ेस को कार्यान्वित कर सकता है, जिससे एकाधिक इंटरफ़ेस विरासत की अनुमति मिलती है।
  3. कंस्ट्रक्टर्स:
    • सार वर्ग: एक अमूर्त वर्ग में कंस्ट्रक्टर हो सकते हैं, जिनका उपयोग वर्ग की स्थिति को आरंभ करने के लिए किया जा सकता है।
    • इंटरफ़ेस: इंटरफ़ेस में कंस्ट्रक्टर नहीं हो सकते क्योंकि वे राज्य या उदाहरण-विशिष्ट व्यवहार को परिभाषित नहीं करते हैं।
  4. एक्सेस संशोधक:
    • सार वर्ग: सार वर्गों में विधियों, क्षेत्रों और गुणों के लिए एक्सेस संशोधक हो सकते हैं, जो दृश्यता और पहुंच पर अधिक नियंत्रण की अनुमति देते हैं।
    • इंटरफ़ेस: इंटरफ़ेस के सभी सदस्य परोक्ष रूप से सार्वजनिक होते हैं और उनमें एक्सेस संशोधक नहीं हो सकते।
  5. फ़ील्ड:
    • सार वर्ग: सार वर्ग में फ़ील्ड हो सकते हैं, जो वर्ग के भीतर डेटा को संग्रहीत और प्रबंधित कर सकते हैं।
    • इंटरफ़ेस: इंटरफ़ेस में फ़ील्ड नहीं हो सकते; वे केवल विधि और संपत्ति हस्ताक्षर परिभाषित करते हैं।
  6. एकाधिक वंशानुक्रम:
    • सार वर्ग: जबकि एक वर्ग एकल अमूर्त वर्ग से विरासत में मिल सकता है, यह कई इंटरफेस को भी लागू कर सकता है, जिससे एकाधिक विरासत के सीमित रूप की अनुमति मिलती है।
    • इंटरफ़ेस: इंटरफ़ेस का उपयोग एक वर्ग को कई इंटरफ़ेस लागू करने में सक्षम करके एकाधिक वंशानुक्रम प्राप्त करने के लिए किया जाता है।
  7. बक्सों का इस्तेमाल करें:
    • सार वर्ग: सार वर्ग तब उपयुक्त होते हैं जब आप संबंधित वर्गों के लिए साझा कार्यान्वयन के साथ एक सामान्य आधार प्रदान करना चाहते हैं, और जब आप वर्गों से कुछ सामान्य व्यवहार की अपेक्षा करते हैं।
    • इंटरफ़ेस: इंटरफ़ेस उन वर्गों के लिए एक अनुबंध को परिभाषित करता है जिनका एक सामान्य आधार नहीं हो सकता है लेकिन उन्हें व्यवहार या कार्यक्षमता के एक विशिष्ट सेट का पालन करने की आवश्यकता होती है।
संदर्भ
  1. https://csharp.net-tutorials.com/classes/abstract-classes/
  2. https://dl.acm.org/doi/abs/10.1145/512035.512041

अंतिम अद्यतन: 11 दिसंबर, 2023

बिंदु 1
एक अनुरोध?

मैंने आपको मूल्य प्रदान करने के लिए इस ब्लॉग पोस्ट को लिखने में बहुत मेहनत की है। यदि आप इसे सोशल मीडिया पर या अपने मित्रों/परिवार के साथ साझा करने पर विचार करते हैं, तो यह मेरे लिए बहुत उपयोगी होगा। साझा करना है ♥️

"सी# में सार वर्ग बनाम इंटरफ़ेस: अंतर और तुलना" पर 20 विचार

  1. किसी अमूर्त वर्ग या इंटरफ़ेस का उपयोग कब करना है इसका विवरण डेवलपर्स के लिए मूल्यवान अंतर्दृष्टि प्रदान करता है। उन व्यावहारिक परिदृश्यों को समझना महत्वपूर्ण है जिनमें से प्रत्येक सबसे अधिक लाभकारी है।

    जवाब दें
  2. मुझे C# में अमूर्त वर्गों और इंटरफेस की यह व्याख्या बहुत जानकारीपूर्ण और व्यापक लगती है। C# में ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग के बारे में सीखने वाले किसी भी व्यक्ति के लिए यह एक बेहतरीन संसाधन है।

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

      जवाब दें
    • विस्तृत तुलना तालिका अमूर्त वर्गों और इंटरफेस के बीच अंतर को समझना आसान बनाती है। अच्छी तरह से संरचित स्पष्टीकरण.

      जवाब दें
  3. मैं आश्वस्त नहीं हूं कि अमूर्त कक्षाएं हमेशा इंटरफेस से बेहतर होती हैं। स्पष्टीकरण में उनके मतभेदों को स्पष्ट करने के लिए वास्तविक दुनिया के उदाहरणों और व्यावहारिक उपयोग के मामलों पर विचार किया जाना चाहिए।

    जवाब दें
    • मैं आपकी बात समझता हूं, लेकिन लेख का फोकस मुख्य रूप से सैद्धांतिक भेदों पर है। वास्तविक दुनिया के उदाहरण वास्तव में इन अवधारणाओं की समझ को बढ़ा सकते हैं।

      जवाब दें
    • मैं जेम्स से सहमत हूं. अधिक व्यावहारिक उदाहरण तुलना को डेवलपर्स के लिए अधिक प्रभावशाली और प्रासंगिक बना देंगे।

      जवाब दें
  4. हालांकि लेख जानकारीपूर्ण है, मुझे लगता है कि यह प्रमुख विशेषताओं के अधिक संक्षिप्त विश्लेषण और C# में अमूर्त वर्गों और इंटरफेस के उपयोग के मामलों से लाभान्वित हो सकता है।

    जवाब दें
    • मैं आदरपूर्वक असहमत हूं। अवधारणाओं को पूरी तरह से समझने के लिए गहराई से विश्लेषण आवश्यक है। जब प्रोग्रामिंग की बात आती है तो कम से अधिक जानकारी रखना बेहतर है।

      जवाब दें
  5. C# में अमूर्त वर्गों और इंटरफेस के बीच स्पष्ट अंतर इस आलेख में अच्छी तरह से व्यक्त किया गया है। यह C# में OOP में रुचि रखने वाले किसी भी व्यक्ति के लिए एक मौलिक संसाधन है।

    जवाब दें
    • बिल्कुल! अमूर्त वर्गों और इंटरफेस के लिए दिए गए उदाहरण उत्कृष्ट स्पष्टता प्रदान करते हैं। इन अवधारणाओं को समझने के लिए एक महान आधार।

      जवाब दें
    • C# में अमूर्तता और वंशानुक्रम पर लेख की गहराई अमूर्त वर्गों और इंटरफेस की गहन समझ के लिए मंच तैयार करती है। एक बहुमूल्य पाठ।

      जवाब दें
  6. लेख अमूर्त वर्गों और इंटरफेस का एक व्यापक विवरण प्रदान करता है, जो इसे C# डेवलपर्स के लिए एक अनिवार्य मार्गदर्शिका बनाता है।

    जवाब दें
    • इस आलेख में अमूर्त वर्गों और इंटरफेस के व्यावहारिक अनुप्रयोगों का गहन अध्ययन किया गया है। वास्तव में एक समृद्ध पाठ।

      जवाब दें
    • वास्तव में! अमूर्त वर्गों और इंटरफेस की ऐसी व्यावहारिक व्याख्या देखना ताज़ा है। यह प्रोग्रामर्स के लिए एक मूल्यवान संसाधन है।

      जवाब दें
  7. अमूर्त वर्गों और इंटरफेस के बीच अंतर का विश्लेषण गहन है और इससे डेवलपर्स के लिए कोई भी भ्रम खत्म हो जाना चाहिए।

    जवाब दें
    • बिल्कुल। मैं तुलना तालिका की गहराई की सराहना करता हूं, क्योंकि यह स्पष्ट रूप से अमूर्त वर्गों और इंटरफेस के बीच अंतर को रेखांकित करता है।

      जवाब दें
  8. लेख अमूर्त वर्गों और इंटरफेस के जटिल विवरण को इस तरह से स्पष्ट करता है जो ज्ञानवर्धक और आकर्षक दोनों है। C# डेवलपर्स के लिए अवश्य पढ़ें।

    जवाब दें
  9. मुझे अमूर्त वर्गों और इंटरफेस की इतनी व्यापक और उच्च-क्षमता वाली व्याख्या की उम्मीद नहीं थी। यह स्पष्ट है कि लेखक जानकार है और इन अवधारणाओं से गहराई से परिचित है।

    जवाब दें
  10. यह आलेख C# में अमूर्त वर्गों और इंटरफ़ेस का स्पष्ट और विस्तृत विवरण प्रदान करता है। यह अनुभवी डेवलपर्स के लिए एक बेहतरीन रिफ्रेशर और शुरुआती लोगों के लिए एक उत्कृष्ट शिक्षण संसाधन है।

    जवाब दें

एक टिप्पणी छोड़ दो

क्या आप इस लेख को बाद के लिए सहेजना चाहते हैं? अपने लेख बॉक्स में सहेजने के लिए नीचे दाएं कोने में दिल पर क्लिक करें!