एकल वंशानुक्रम बनाम एकाधिक वंशानुक्रम
विषय
- सामग्री: एकल वंशानुक्रम और एकाधिक वंशानुक्रम के बीच अंतर
- तुलना चार्ट
- एकल वंशानुक्रम
- एकाधिक वंशानुक्रम
- मुख्य अंतर
- निष्कर्ष
- व्याख्यात्मक वीडियो
सिंगल इनहेरिटेंस और मल्टीपल इनहेरिटेंस के बीच महत्वपूर्ण अंतर यह है कि सिंगल इनहेरिटेंस में, व्युत्पन्न वर्ग केवल एक बेस क्लास विरासत में मिलता है, जबकि मल्टीपल इनहेरिटेंस में, व्युत्पन्न क्लास एक बेस क्लास से अधिक विरासत में मिलती है।
विरासत OOP में सबसे महत्वपूर्ण अवधारणाओं में से एक है जो ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग है। विरासत में पुन: प्रयोज्य की अवधारणा का समर्थन किया जाता है। पुन: प्रयोज्य का अर्थ है नया वर्ग पहले से मौजूद वर्ग के गुणों का पुन: उपयोग करता है। इनहेरिटेंस व्युत्पन्न वर्ग में बेस क्लास और पहुंच विरासत में मिलती है, निर्दिष्ट करता है कि कौन सा बेस क्लास सदस्य विरासत में मिलेगा। विरासत के प्रकार हैं जो एकल वंशानुक्रम, श्रेणीबद्ध विरासत, बहुस्तरीय विरासत और संकर विरासत हैं। एकल वंशानुक्रम में, व्युत्पन्न वर्ग केवल एक आधार वर्ग विरासत में मिलता है, जबकि कई विरासतों में, व्युत्पन्न वर्ग एक से अधिक आधार वर्ग प्राप्त करता है।
बस एक एकल व्युत्पन्न वर्ग है जो आधार वर्ग से विरासत में मिला है। आधार वर्ग को विरासत में देने के तीन तरीके हैं जो सार्वजनिक, संरक्षित और निजी तौर पर हैं। बेस क्लास की विरासत के लिए एक्सेस स्पेसियर का उपयोग किया जाता है। एकल वंशानुक्रम का कारण एकल माता-पिता वर्ग से गुण और व्यवहार विरासत में मिला है। कोड पुन: प्रयोज्यता वाली ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग का मुख्य उद्देश्य एकल वंशानुक्रम का उपयोग करके पूरा किया जाता है। अगर हम एकल वंशानुक्रम की तुलना में एकाधिक वंशानुक्रम की तुलना में बात करते हैं, तो एकल वंशानुक्रम कई वंशानुक्रम की तुलना में अधिक आसानी से होना चाहिए। एकल वंशानुक्रम में फ़ंक्शन ओवरराइडिंग का उपयोग किया जाता है। रन-टाइम बहुरूपता को ओवरराइडिंग के रूप में जाना जाता है। ओवरराइडिंग एक फ़ंक्शन कीवर्ड का उपयोग करके प्राप्त की जाती है जो आभासी है। यह कीवर्ड बेस क्लास में उपयोग होता है। जब व्युत्पन्न वर्ग एक फ़ंक्शन को फिर से परिभाषित करता है, तो ओवरराइड फ़ंक्शन को बदला नहीं जा सकता है। C ++ में ओवरराइड करना यह निर्धारित करता है कि फ़ंक्शन का कौन सा संस्करण कहा जाता है। सिंगल इनहेरिटेंस का उपयोग C ++, Java, PHP, C # और विजुअल बेस में किया जाता है।
एकाधिक वंशानुक्रम एक से अधिक बेस क्लास प्राप्त करने की अनुमति देता है इसका मतलब है कि आप एक से अधिक बेस क्लास के गुण प्राप्त कर सकते हैं। हमारे पास एक व्युत्पन्न वर्ग और कई आधार वर्ग हो सकते हैं। बेस क्लास को अलग एक्सेस स्पेसियर का उल्लेख करके विरासत में मिला है। एकाधिक वंशानुक्रम में सममित विलय और असममित विस्तार होता है। जब एडेप्टर पैटर्न होता है तो कई इनहेरिटेंस का उपयोग किया जाता है। C ++, Python, Perl, Eiffel, Dylan, Curl, Eulisp, Tcl में मल्टीपल इनहेरिटेंस का उपयोग किया जाता है। एकल वंशानुक्रम की तुलना में कई वंशानुक्रमों के लिए कोड का कार्यान्वयन जटिल है।
सामग्री: एकल वंशानुक्रम और एकाधिक वंशानुक्रम के बीच अंतर
- तुलना चार्ट
- एकल वंशानुक्रम
- एकाधिक वंशानुक्रम
- मुख्य अंतर
- निष्कर्ष
- व्याख्यात्मक वीडियो
तुलना चार्ट
आधार | एकल वंशानुक्रम | एकाधिक वंशानुक्रम |
अर्थ | एकल वंशानुक्रम में, व्युत्पन्न वर्ग केवल एकल आधार वर्ग विरासत में मिला है | एकाधिक वंशानुक्रमों में, व्युत्पन्न वर्ग एक से अधिक आधार वर्ग विरासत में मिला है।
|
सुरक्षित | एकल वंशानुक्रम एकाधिक वंशानुक्रमों की तुलना में अधिक सुरक्षित होता है | एकाधिक वंशानुक्रम लागू करने के लिए सुरक्षित नहीं हैं |
पहुंच | एकल वर्ग की एकल विरासत सुविधाओं में विरासत में मिली है | कई वर्गों की कई विरासत सुविधाओं में विरासत में मिला जा सकता है |
क्रम | एकल वंशानुक्रम के लिए अधिक रन समय की आवश्यकता होती है | एकाधिक वंशानुक्रम को कम समय चलाने की आवश्यकता होती है |
एकल वंशानुक्रम
बस एक एकल व्युत्पन्न वर्ग है जो आधार वर्ग से विरासत में मिला है। आधार वर्ग को विरासत में देने के तीन तरीके हैं जो सार्वजनिक, संरक्षित और निजी तौर पर हैं। बेस क्लास की विरासत के लिए एक्सेस स्पेसियर का उपयोग किया जाता है। एकल वंशानुक्रम का कारण एकल माता-पिता वर्ग से गुण और व्यवहार विरासत में मिला है। कोड पुन: प्रयोज्यता वाली ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग का मुख्य उद्देश्य एकल वंशानुक्रम का उपयोग करके पूरा किया जाता है। यदि हम एकल वंशानुक्रम की तुलना में कई वंशानुक्रमों की तुलना में बात करते हैं, तो एकल वंशानुक्रम कई वंशानुक्रमों की तुलना में अधिक आसानी से होना चाहिए। एकल वंशानुक्रम में फ़ंक्शन ओवरराइडिंग का उपयोग किया जाता है। रन-टाइम बहुरूपता को ओवरराइडिंग के रूप में जाना जाता है। ओवरराइडिंग एक फ़ंक्शन कीवर्ड का उपयोग करके प्राप्त की जाती है जो आभासी है। इस कीवर्ड का उपयोग बेस क्लास में किया जाता है। जब व्युत्पन्न वर्ग एक फ़ंक्शन को फिर से परिभाषित करता है, तो ओवरराइड फ़ंक्शन को बदला नहीं जा सकता है। C ++ में ओवरराइड करना यह निर्धारित करता है कि फ़ंक्शन का कौन सा संस्करण कहा जाता है। सिंगल इनहेरिटेंस का उपयोग C ++, Java, PHP, C # और विजुअल बेस में किया जाता है।
एकाधिक वंशानुक्रम
एकाधिक वंशानुक्रम एक से अधिक बेस क्लास प्राप्त करने की अनुमति देते हैं इसका मतलब है कि आप एक से अधिक बेस क्लास के गुण प्राप्त कर सकते हैं। हमारे पास एक व्युत्पन्न वर्ग और कई आधार वर्ग हो सकते हैं। बेस क्लास को अलग एक्सेस स्पेसियर का उल्लेख करके विरासत में मिला है। एकाधिक विरासत में सममित विलय और असममित विस्तार होता है। जब एक एडाप्टर पैटर्न होता है, तो कई विरासत का उपयोग किया जाता है। C +, पायथन, पर्ल, एफिल, डायलन, कर्ल, युलिस्प, Tcl में एकाधिक वंशानुक्रम का उपयोग किया जाता है। एकल वंशानुक्रम की तुलना में कई वंशानुक्रमों के लिए कोड का कार्यान्वयन जटिल है।
मुख्य अंतर
- एकल वंशानुक्रम में, व्युत्पन्न वर्ग केवल एक आधार वर्ग विरासत में मिलता है, जबकि कई विरासतों में, व्युत्पन्न वर्ग एक से अधिक आधार वर्ग प्राप्त करता है।
- सिंगल इनहेरिटेंस कई विरासतों की तुलना में अधिक सुरक्षित है, जबकि कई विरासतों को लागू करना सुरक्षित नहीं है।
- एकल वंशानुक्रम में एकल वर्ग की विशेषताएं विरासत में मिली हैं, जबकि कई वर्गों की विरासत में विरासत की विशेषताएं प्राप्त की जा सकती हैं।
- सिंगल इनहेरिटेंस के लिए अधिक रन समय की आवश्यकता होती है जबकि मल्टीपल इनहेरिटेंस के लिए कम रन समय की आवश्यकता होती है
निष्कर्ष
ऊपर इस लेख में हम कार्यान्वयन के साथ एकल विरासत और कई विरासत के बीच स्पष्ट अंतर देखते हैं