सार कक्षा और इंटरफ़ेस के बीच अंतर सी #

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

एक सार वर्ग क्या है?

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

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

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

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

परिभाषा

  1. की सार वर्ग और इंटरफ़ेस में सी #
  2. - एक सार वर्ग एक विशेष प्रकार का वर्ग है जिसमें कोई क्रियान्वयन नहीं होती है। कार्यान्वयन तर्क इसके व्युत्पन्न वर्गों द्वारा प्रदान किया गया है। इसमें अमूर्त और गैर-अमूर्त तरीकों भी हो सकती हैं।दूसरी तरफ, एक इंटरफ़ेस, एक ऐसा पैटर्न है जो कुछ भी नहीं कर सकता है। तकनीकी तौर पर, यह सिर्फ एक खाली खोल है कार्यान्वयन - एक सार वर्ग में परिभाषा और इसके कार्यान्वयन दोनों शामिल हो सकते हैं। यह एक अधूरा वर्ग है जिसे तत्काल नहीं किया जा सकता। किसी भी कोड के बिना एक इंटरफ़ेस में कार्यक्षमता का हस्ताक्षर ही हो सकता है।
  3. अभिगम मॉडिफ़र्स - एक सार वर्ग में कई एक्सेस मॉडिफ़र जैसे कि subs, फ़ंक्शंस, प्रॉपर्टी आदि हो सकते हैं, जबकि एक इंटरफ़ेस तक पहुंच संशोधक होने की अनुमति नहीं है और सभी तरीकों को सार्वजनिक रूप से परिभाषित किया जाना चाहिए।
  4. एकरूपता - एक सार वर्ग का उपयोग उसी प्रकार, व्यवहार और स्थिति के कार्यान्वयन के लिए किया जाता है, जबकि एक इंटरफ़ेस उन कार्यान्वयनों के लिए उपयोग किया जाता है जो केवल विधि हस्ताक्षर साझा करते हैं। घोषणा
  5. - एक सार वर्ग अन्य सभी वर्गों के लिए आधार वर्ग के रूप में कार्य करता है, ताकि किसी भी वैरिएबल को घोषित करने या किसी भी चर का उपयोग करने के लिए इंटरफेस की अनुमति नहीं दे सकें। कन्स्ट्रक्टर घोषणा
  6. - जब एक सार वर्ग में कन्स्ट्रक्टर घोषणा हो सकती है, तो एक इंटरफ़ेस में कन्स्ट्रक्टर घोषणापत्र नहीं हो सकता है। कोर बनाम पेरीफायरल
  7. - एक सार वर्ग का उपयोग कक्षा के मूल पहचान को परिभाषित करने के लिए किया जाता है और उसी डेटा प्रकार के ऑब्जेक्ट के लिए इस्तेमाल किया जा सकता है। दूसरी तरफ, एक इंटरफ़ेस का प्रयोग क्लास की परिधीय क्षमता को परिभाषित करने के लिए किया जाता है। कठोर बनाम सफ़ल
  8. - कम से कम एक डेवलपर के परिप्रेक्ष्य से, एक अंतरफलक अधिक कठोर है, जबकि एक अमूर्त वर्ग कार्यक्षमता के मामले में अधिक अनुकूल है। सार वर्ग बनाम इंटरफ़ेस: तालिका प्रपत्र
  9. सार वर्ग इंटरफ़ेस

एक अमूर्त वर्ग के कार्यों, उप, और गुणों के सदस्य घोषणा के लिए सभी पहुंच संशोधक हो सकते हैं।

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

एक वर्ग अधिक से अधिक केवल एक सार वर्ग का उपयोग कर सकता है

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