2010-11-08 19 views
8

संभव डुप्लिकेट:
Interface vs Abstract Class (general OO)इंटरफेस और एक अमूर्त वर्ग के बीच क्या अंतर है?

मैं अंतर पर बिल्कुल स्पष्ट नहीं कर रहा हूँ।

धन्यवाद

+3

इस पर बहुत सारी पोस्ट हैं: http://stackoverflow.com/questions/761194/interface-vs-abstract-class-general-oo – skaz

+0

~ बादाम जॉय के पागल हैं, माउंड नहीं हैं। ~ प्रतिस्थापित करने के अलावा सार तत्वों के साथ "बादाम जॉय", इंटरफेस के साथ "माउंड्स" और कुछ ठोस तरीकों के साथ "पागल"। – Powerlord

उत्तर

17

वे बहुत समान हैं, लेकिन वहाँ कुछ महत्वपूर्ण तकनीकी अंतर हैं:

  • एक सार वर्ग आप तरीकों के कुछ के लिए एक डिफ़ॉल्ट कार्यान्वयन प्रदान करने के लिए अनुमति देता है, लेकिन एक इंटरफेस करने के लिए आप की अनुमति नहीं है कोई कार्यान्वयन प्रदान करें।
  • आप कई इंटरफेस लागू कर सकते हैं लेकिन आप केवल एक अमूर्त वर्ग से प्राप्त कर सकते हैं।

    • आप के लिए एक इंटरफेस का उपयोग करना चाहिए एक अनुबंध को परिभाषित:

    इन मतभेदों को कैसे दो तकनीकों का प्रयोग करना चाहिए प्रभावित करते हैं।

  • एक सार वर्ग पुन: उपयोग कोड पर उपयोगी हो सकता है ... लेकिन ध्यान रखें कि कोड का पुन: उपयोग करने का यह एकमात्र तरीका नहीं है। आपको रोकथाम जैसे अन्य दृष्टिकोणों पर भी विचार करना चाहिए।
4

एक इंटरफ़ेस किसी भी सदस्य विधियों की परिभाषा की अनुमति नहीं देता है, जबकि एक सार वर्ग कुछ या सभी को परिभाषित करने की अनुमति देता है। एक वर्ग हालांकि केवल एक वर्ग (सार या नहीं) का विस्तार कर सकता है लेकिन जितना चाहें उतने इंटरफेस को कार्यान्वित कर सकता है।

3

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

संबंधित मुद्दे