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