2008-10-27 21 views
18

का सटीक उपयोग एक सार वर्ग का सटीक उपयोग क्या है? एक साधारण वर्ग में एक ही चीज करना संभव नहीं है क्योंकि यह एक सार वर्ग है?सार वर्ग

+0

देखें: http://stackoverflow.com/questions/56867/interface-vs-base-class –

+0

[टेम्पलेट विधि डिजाइन पैटर्न] पर एक नज़र डालें (http://sourcemaking.com/design_patterns/template_method) मुझे लगता है सार वर्ग वहाँ unreplaceable है। – rafek

उत्तर

19

एक सार वर्ग का उपयोग तब किया जाता है जब आपके पास कुछ आधार कार्यक्षमता होती है जिसे आप सबक्लास को उत्तराधिकारी बनाना चाहते हैं, लेकिन बेस क्लास को तुरंत चालू करने का अर्थ नहीं होगा। उदाहरण के लिए, यदि आपके पास आकार आधार वर्ग की तरह कुछ था, तो आप कुछ कार्यान्वयन में निर्मित हो सकते हैं जिसका उपयोग उप-वर्गों के साथ-साथ इंटरफ़ेस विधियों द्वारा किया जा सकता है जिन्हें आप सबक्लास लागू करना चाहते हैं। हालांकि, शायद यह एक आकार वस्तु बनाने के लिए समझ में नहीं आता है। एक अमूर्त वर्ग आपको यह कार्यक्षमता देता है। अमूर्त वर्ग के उपयोग का एक और बड़ा उदाहरण abstract factory pattern है।

24

कुछ ठोस कार्यान्वयन प्रदान करने के लिए एक अमूर्त वर्ग का उपयोग करें लेकिन तत्काल अनुमति न दें। आप हमेशा एक साधारण वर्ग को तुरंत चालू कर सकते हैं जो समझ में नहीं आता है कि यह अकेले नहीं खड़ा हो सकता है। साथ ही, एक कार्यान्वयन कक्षाओं में समान ठोस कार्यान्वयन होने पर एक इंटरफ़ेस पर्याप्त नहीं हो सकता है। एक अमूर्त वर्ग बस पर्याप्त है। केवल अनुबंध, कोई कार्यान्वयन, कोई इन्स्टेन्शियशन

  • सार वर्ग:

    • इंटरफ़ेस अनुबंध, कुछ कार्यान्वयन, कोई इन्स्टेन्शियशन
    • कक्षा: अनुबंध, क्रियान्वयन, इन्स्टेन्शियशन
  • +0

    मैं तीसरे, कक्षा में यह कैसे संभव अनुबंध कर सकता हूं। क्योंकि अनुबंध का अर्थ उस विधि की घोषणा है, जिसका अर्थ है "अमूर्त"। और कंपाइलर बलों को अमूर्त वर्ग में परिवर्तित करने के लिए सामान्य वर्ग में यह संभव अनुबंध कैसे है। अगर मेरा तर्क गलत है, तो कृपया मुझे सही करें। – devsda

    1

    नियमित कक्षाओं के विपरीत, abstract कक्षाओं में abstract विधियां हो सकती हैं। वे इंटरफेस सदस्यों की तरह काम करते हैं। वे तरीकों को लागू कर सकते आदि, खेतों & नेस्टेड प्रकार के होते हैं, एक और वर्ग से निकाले जाते हैं,

    5

    नियमित कक्षाएं सभी के लिए कार्यान्वयन प्रदान करने के लिए आप की आवश्यकता:

    इस बीच, वे तो बस सब कुछ नियमित कक्षाओं कर सकते हैं इस बारे में क्या कर सकते हैं तरीकों।
    इंटरफेस के लिए आपको सभी विधियों के लिए कोई कार्यान्वयन प्रदान करने की आवश्यकता है।

    सार कक्षाएं वर्ग का एकमात्र प्रकार है कि आप दोनों के लिए अनुमति देते तरीकों कि एक कार्यान्वयन शामिल नहीं है, और तरीकों कि एक कार्यान्वयन प्रदान नहीं करते हैं, लेकिन एक प्रदान करने के लिए एक इनहेरीट वर्ग की आवश्यकता है।

    तथ्य यह है कि आप एक कार्यान्वयन के बिना तरीकों को जोड़ने के लिए अनुमति दी जाती है कारण है कि आप एक अमूर्त वर्ग का दृष्टांत नहीं कर सकता है: यदि आप केवल कुछ अपने सभी तरीकों के लिए कार्यान्वयन है कि दृष्टांत कर सकते हैं।

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