2011-01-21 21 views
33

इनमें से प्रत्येक के फायदे और नुकसान क्या हैं?तुलना: इंटरफ़ेस विधियों बनाम वर्चुअल विधियों बनाम अमूर्त विधियों

  • इंटरफ़ेस तरीकों
  • आभासी तरीकों
  • सार तरीकों

जब एक क्या चुनना चाहिए? इस निर्णय के दौरान किसी को ध्यान में रखना चाहिए?

+7

@ डाउनवॉटर: प्रश्न के साथ क्या गलत है? किसी को यह सवाल नहीं पूछना चाहिए? इस पर अधिक जानकारी के लिए – Nawaz

उत्तर

37

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

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

+4

, http://stackoverflow.com/a/3621600/8151 देखें। टीएल; डॉ: इंटरफ़ेस विधियों को उत्सर्जित आईएल में आभासी घोषित किया जाता है। – cori

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