हम सभी जानते हैं कि C# जावा की तरह एक ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग है और ऑब्जेक्ट-ओरिएंटेड अवधारणाओं के लिए पूर्ण समर्थन प्रदान करता है जो हैं एनकैप्सुलेशन, एब्स्ट्रैक्शन, इनहेरिटेंस और पॉलीमॉर्फिज्म। एब्स्ट्रैक्शन के विपरीत दोनों एब्स्ट्रैक्ट क्लास और इंटरफेस सामने आते हैं क्योंकि ये दोनों C# प्रोग्राम में एब्स्ट्रैक्शन प्रदान करते हैं।
एक एब्स्ट्रैक्ट क्लास में, हम कार्यक्षमता बना सकते हैं और जिसे डेराइव्ड क्लास द्वारा कार्यान्वित करने की आवश्यकता होती है। इंटरफेस हमें कार्यक्षमता या फंक्शन को परिभाषित करने की अनुमति देता है लेकिन उसे कार्यान्वित नहीं कर सकता। डेराइव्ड क्लास इंटरफेस को एक्सटेंड करती है और उन फंक्शन्स को कार्यान्वित करती है।
एब्स्ट्रैक्ट क्लास और इंटरफेस के बीच महत्वपूर्ण अंतर निम्नलिखित हैं।
| क्र.सं. | मुख्य बिंदु | एब्स्ट्रैक्ट क्लास | इंटरफेस |
|---|---|---|---|
| 1 | परिभाषा | मानक परिभाषा के संदर्भ में एक एब्स्ट्रैक्ट क्लास है, संकल्पनात्मक रूप से, एक क्लास जिसे इंस्टेंशिएट नहीं किया जा सकता और आमतौर पर एक क्लास के रूप में कार्यान्वित किया जाता है जिसमें एक या अधिक प्योर वर्चुअल (एब्स्ट्रैक्ट) फंक्शन्स होते हैं। | दूसरी ओर एक इंटरफेस विवरण है कि कौन से मेंबर फंक्शन्स एक क्लास को, जो इस इंटरफेस को इनहेरिट करता है, कार्यान्वित करना चाहिए। दूसरे शब्दों में, एक इंटरफेस क्लास के व्यवहार का वर्णन करता है। |
| 2 | कार्यान्वयन | C# में अन्य सामान्य क्लास डिज़ाइन की तरह एब्स्ट्रैक्ट क्लास का भी अपना कार्यान्वयन होता है साथ ही इसकी घोषणा के साथ। | दूसरी ओर एक इंटरफेस में केवल सिग्नेचर हो सकता है, कार्यान्वयन नहीं। जबकि इसका कार्यान्वयन उस क्लास द्वारा प्रदान किया जाता है जो इसे कार्यान्वित करती है। |
| 3 | विरासत | C# में विनिर्देश के अनुसार एक क्लास केवल एक अन्य क्लास को एक्सटेंड कर सकती है इसलिए मल्टीपल इनहेरिटेंस एब्स्ट्रैक्ट क्लास द्वारा प्राप्त नहीं किया जाता। | दूसरी ओर इंटरफेस के मामले में एक क्लास मल्टीपल इंटरफेस को कार्यान्वित कर सकती है और इसलिए मल्टीपल इनहेरिटेंस इंटरफेस द्वारा प्राप्त किया जाता है। |
| 4 | कंस्ट्रक्टर | C# में अन्य क्लासेस की तरह इंस्टेंशिएशन के लिए एब्स्ट्रैक्ट क्लास का भी कंस्ट्रक्टर होता है जो इसके नॉन-स्टेटिक मेथड्स को एक्सेस करने के लिए एब्स्ट्रैक्ट क्लास का इंस्टेंस प्रदान करता है। | दूसरी ओर इंटरफेस में कंस्ट्रक्टर नहीं होता इसलिए हम सीधे इंटरफेस को इंस्टेंशिएट नहीं कर सकते हालांकि इसके मेथड्स को इसे कार्यान्वित करने वाली क्लास का इंस्टेंस बनाकर एक्सेस किया जा सकता है। |
| 5 | मॉडिफायर्स | चूंकि एब्स्ट्रैक्ट क्लास C# में अन्य सामान्य क्लास की तरह है इसलिए इसमें पब्लिक, प्राइवेट, प्रोटेक्टेड आदि जैसे विभिन्न प्रकार के एक्सेस मॉडिफायर्स हो सकते हैं। | दूसरी ओर चूंकि इंटरफेस को अन्य क्लास द्वारा इसके मेथड्स का कार्यान्वयन प्रदान करने के लिए कार्यान्वित करने की आवश्यकता होती है इसलिए इसमें केवल पब्लिक एक्सेस मॉडिफायर हो सकता है। |
| 6 | प्रदर्शन | चूंकि एब्स्ट्रैक्ट क्लास के अपने मेथड्स और साथ ही उनके कार्यान्वयन भी होते हैं, इसके एब्स्ट्रैक्ट मेथड्स के कार्यान्वयन के लिए इसके कार्यान्वयन क्लास का रेफरेंस होता है इसलिए प्रदर्शन इंटरफेस की तुलना में तुलनात्मक रूप से तेज है। | दूसरी ओर इंटरफेस का प्रदर्शन धीमा है क्योंकि इसे संबंधित क्लास में वास्तविक मेथड को खोजने में समय लगता है। |