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

सारांश वर्ग क्या है?

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

C # में अमूर्त वर्ग और इंटरफ़ेस के बीच अंतर।

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

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

अमूर्त वर्ग और इंटरफ़ेस: सार वर्ग और C # में इंटरफ़ेस के बीच का अंतर।

  1. एकाधिक वंशानुक्रम - एक वर्ग केवल एक सार वर्ग का उपयोग कर सकता है, इसलिए एकाधिक वंशानुक्रम संभव नहीं है। बदले में, इंटरफ़ेस कई विरासतों का समर्थन कर सकता है, जिसका अर्थ है कि कक्षा में विरासत की कोई भी संख्या हो सकती है। सार वर्ग और इंटरफ़ेस परिभाषा सी # में - एक सार वर्ग एक प्रकार का वर्ग है जिसमें विनिर्देश शामिल हो सकते हैं जिन्हें विशेष रूप से लागू नहीं किया गया है। कार्यान्वयन का तर्क इसके व्युत्पन्न वर्गों द्वारा समर्थित है। इसमें अमूर्त और गैर-सार दोनों तरीके हो सकते हैं। बदले में, इंटरफ़ेस केवल एक पैटर्न है जो कुछ भी नहीं कर सकता है। तकनीकी रूप से, यह सिर्फ एक खाली खोल है। कार्यान्वयन - एक सार वर्ग में परिभाषा और इसके कार्यान्वयन दोनों शामिल हो सकते हैं। यह वर्ग अधूरा है और इसे स्थापित नहीं किया जा सकता है। इंटरफ़ेस केवल किसी भी कोड के बिना एक कार्यक्षमता का हस्ताक्षर हो सकता है। एक्सेस संशोधक - सार वर्ग में कई इनपुट संशोधक हो सकते हैं, जैसे कि उप, फ़ंक्शन, विशेषताएं आदि, जबकि इंटरफ़ेस संशोधक की अनुमति नहीं है, और सभी तरीकों को स्पष्ट रूप से निर्दिष्ट किया जाना चाहिए। समरूपता - अमूर्त वर्ग का उपयोग एक ही प्रकार, व्यवहार और स्थिति को लागू करने के लिए किया जाता है, जबकि इंटरफ़ेस केवल उन अनुप्रयोगों के लिए है जो हस्ताक्षर को साझा करते हैं। घोषणा - सार वर्ग अन्य सभी वर्गों के लिए एक आधार वर्ग के रूप में कार्य करता है, इसलिए यह किसी भी चर की घोषणा या उपयोग कर सकता है, इसलिए इसे इंटरफ़ेस में किसी भी चर को घोषित करने की अनुमति नहीं है। कंस्ट्रक्टर घोषणा - एक सार वर्ग में एक कंस्ट्रक्टर घोषणा हो सकती है, जबकि इंटरफ़ेस में कंस्ट्रक्टर घोषणा नहीं हो सकती है। प्राथमिक और परिधीय - अमूर्त वर्ग का उपयोग वर्ग पहचानकर्ता की पहचान करने के लिए किया जाता है और इसका उपयोग उसी डेटा प्रकार की वस्तुओं के लिए किया जा सकता है। बदले में, इंटरफ़ेस का उपयोग किसी वर्ग की परिधीय क्षमता को निर्धारित करने के लिए किया जाता है। उत्कृष्ट और पृष्ठभूमि - कम से कम एक प्रोग्रामर के दृष्टिकोण से, सार वर्ग अधिक कार्यात्मक है, और इंटरफ़ेस तंग है।

सारांश वर्ग और इंटरफ़ेस: तालिका प्रपत्र

निष्कर्ष

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

प्रतिक्रिया दें संदर्भ

  • स्वतंत्रता, जेसी। लर्निंग C #। सेबेस्टोपोल: रीली मीडिया, 2002. प्रिंट
  • स्वतंत्रता, जेसी। लर्निंग C #। सेबेस्टोपोल: रीली मीडिया, 2002. प्रिंट
  • लविन, पीटर। ऑब्जेक्ट-ओरिएंटेड PHP: कॉन्सेप्ट्स, मेथड्स, और कोड। सैन फ्रांसिस्को: नो स्टार्च प्रेस, 2006 प्रिंट
  • स्टेलमैन, एंड्रयू और जेनिफर ग्रीन। पहली C # की शुरुआत। कोलकाता: श्रॉफ पब्लिशर्स एंड डिस्ट्रीब्यूटर्स, 2008. प्रिंट
  • "इमेज क्रेडिट: https://stackoverflow.com/questions/2570814/when-to-use-abstract-assassass"