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