सार वर्ग और विरासत के बीच का अंतर

Anonim

सार वर्ग बनाम विरासत

सार वर्ग और विरासत दो महत्वपूर्ण ऑब्जेक्ट ओरिएंटेड अवधारणाओं को जावा की तरह कई ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग भाषाओं में मिलती हैं। सार कक्षा को नियमित (ठोस) वर्ग का सार संस्करण माना जा सकता है, जबकि वंशानुक्रम नए वर्गों को अन्य वर्गों का विस्तार करने की अनुमति देता है। सार वर्ग एक ऐसा वर्ग है जिसे प्रारंभ नहीं किया जा सकता, बल्कि विस्तारित किया जा सकता है। इसलिए, सार कक्षाएं केवल अर्थपूर्ण हैं यदि प्रोग्रामिंग भाषा विरासत का समर्थन करती है जावा में, सार की कक्षाओं को ऐब्जेक्ट कीवर्ड्स का प्रयोग करके घोषित किया जाता है, जबकि एक्स्टेंड्स कीवर्ड का इस्तेमाल किसी सुपर (सुपर) क्लास से किया जाता है।

सार कक्षा क्या है?

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

सार वर्गों में सार विधियां हो सकती हैं। एक सार वर्ग का विस्तार करने वाले उपवर्ग इन (उत्तराधिकृत) सार विधियों को लागू कर सकते हैं। यदि बाल वर्ग सभी तरह की सार विधियों को लागू करता है, तो यह एक ठोस वर्ग है। लेकिन अगर ऐसा नहीं होता, तो बच्चा भी एक सार वर्ग बन जाता है। इसका सब क्या मतलब यह है कि, जब प्रोग्रामर एक कक्षा को एक सार के रूप में नामांकित करता है, वह कह रही है कि वर्ग अधूरा होगा और उसके पास ऐसे तत्व होंगे जो इनहेरिटिंग उपवर्गों द्वारा पूरा किए जाने की आवश्यकता होगी। यह दो प्रोग्रामर्स के बीच एक अनुबंध बनाने का एक अच्छा तरीका है, जो सॉफ्टवेयर विकास में कार्यों को सरल करता है। प्रोग्रामर, जो वारिस के लिए कोड लिखते हैं, को विधि परिभाषाओं का पालन करना आवश्यक है (लेकिन निश्चित रूप से उसका अपना क्रियान्वयन हो सकता है)।

वंशानुक्रम क्या है?

विरासत एक वस्तु उन्मुख अवधारणा है, जो नए वर्गों को अन्य वर्गों को बढ़ाने की अनुमति देता है। विस्तारित कीवर्ड का उपयोग जावा प्रोग्रामिंग भाषा में विरासत की अवधारणा को लागू करने के लिए किया जाता है। वंशानुक्रम अनिवार्य रूप से एक नये परिभाषित क्लास द्वारा मौजूदा वर्ग के विस्तार गुणों और व्यवहार की अनुमति देकर कोड पुन: उपयोग प्रदान करता है। जब कोई नया उप-वर्ग (या व्युत्पन्न वर्ग) एक सुपर क्लास (या पैरेंट क्लास) का विस्तार करता है, तो उप-वर्ग सभी गुणों और सुपर क्लास के तरीकों को प्राप्त करेगा I उप-वर्ग वैकल्पिक रूप से अभिभावक वर्ग से विरासत में मिली व्यवहार (नए या विस्तारित कार्यक्षमता प्रदान करता है) को ओवरराइड कर सकता है।आमतौर पर, एक उपवर्ग एकाधिक सुपर वर्गों (जावा में जावा) विस्तार नहीं कर सकता। इसलिए, आप एकाधिक वंशानुक्रम के लिए उपयोग नहीं कर सकते। एकाधिक विरासत प्राप्त करने के लिए, आपको इंटरफेस का उपयोग करना होगा।

सार कक्षा और विरासत के बीच अंतर क्या है?

सार वर्ग आम तौर पर एक अमूर्त अवधारणा या आंशिक या कोई कार्यान्वयन वाले एक इकाई का प्रतिनिधित्व नहीं करता है वंशानुक्रम नए वर्गों को अन्य वर्गों का विस्तार करने की अनुमति देता है। क्योंकि, सार वर्गों को तत्काल नहीं किया जा सकता है, आपको अमूर्त वर्गों का उपयोग करने के लिए विरासत की अवधारणा का उपयोग करने की आवश्यकता है। अन्यथा, एक सार वर्ग का कोई फायदा नहीं है। सार कक्षाओं में सार विधियां हो सकती हैं और जब कक्षा बढ़ा दी जाती है, तो सभी तरीकों (सार और ठोस) विरासत में मिली हैं। विरासत वर्ग किसी भी या सभी तरीकों को लागू कर सकता है। अगर सभी सार विधियों को लागू नहीं किया जाता है, तो वह वर्ग भी एक सार वर्ग बन जाता है। एक वर्ग एक से अधिक सार वर्ग से विरासत नहीं कर सकता (यह अमूर्त वर्ग की गुणवत्ता नहीं है, बल्कि विरासत का प्रतिबंध है)।