मुख्य अंतर - OOP में बहुरूपता बनाम वंशानुक्रम
ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (OOP) का उपयोग आमतौर पर सॉफ्टवेयर विकसित करने के लिए किया जाता है। कई प्रोग्रामिंग भाषाएं ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग का समर्थन करती हैं। ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग कक्षाओं और वस्तुओं का उपयोग करके प्रोग्राम को डिजाइन करने की एक पद्धति है। OOP में एक वर्ग एक वस्तु बनाने का खाका है। एक वर्ग में गुण और विधियाँ होती हैं। एक वस्तु एक वर्ग का एक उदाहरण है। OOP में चार स्तंभ होते हैं जैसे कि वंशानुक्रम, बहुरूपता, अमूर्तता और एनकैप्सुलेशन। यह लेख OOP में बहुरूपता और वंशानुक्रम के बीच अंतर पर चर्चा करता है। OOP में बहुरूपता और वंशानुक्रम के बीच महत्वपूर्ण अंतर यह है कि बहुरूपता एक वस्तु की कई तरह से व्यवहार करने की क्षमता है और वंशानुक्रम मौजूदा वर्ग के गुणों और विधियों का उपयोग करके एक नया वर्ग बनाना है।
ओओपी में बहुरूपता क्या है?
बहुरूपता कई रूपों को इंगित करना है। एक वस्तु में कई व्यवहार हो सकते हैं। बहुरूपता को दो श्रेणियों में विभाजित किया जा सकता है। वे ओवरलोडिंग और ओवरराइडिंग कर रहे हैं।
ओवरलोडिंग
जावा में लिखे गए निम्न प्रोग्राम को देखें।
चित्र 01: ओवरलोडिंग
उपरोक्त प्रोग्राम के अनुसार A प्रकार का एक ऑब्जेक्ट बनाया जाता है। obj.sum() को कॉल करते समय; यह विधि योग () से संबंधित आउटपुट देगा। obj.sum(2, 3) को कॉल करते समय; यह योग से संबंधित आउटपुट देगा (int a, int b)। यह देखा जा सकता है कि एक ही वस्तु की स्थिति के आधार पर अलग-अलग व्यवहार होते हैं। जब एक ही नाम की कई विधियाँ होती हैं, लेकिन विभिन्न मापदंडों के साथ, इसे ओवरलोडिंग के रूप में जाना जाता है।इसे स्थैतिक बंधन या संकलन समय बहुरूपता के रूप में भी जाना जाता है।
ओवरराइडिंग
एक अन्य प्रकार का बहुरूपता अधिभावी है। जावा में लिखे गए प्रोग्राम को देखें।
चित्र 02: ओवरराइड करना
उपरोक्त कार्यक्रम के अनुसार, कक्षा ए में एक विधि प्रदर्शन () है। कक्षा बी कक्षा ए से फैली हुई है। इसलिए, कक्षा ए में सभी विधियां कक्षा बी द्वारा सुलभ हैं। यह विरासत है। वंशानुक्रम की अवधारणा का वर्णन आगे बाद में किया गया है।
क्लास बी में भी यही मेथड डिस्प्ले () है। टाइप ए और कॉलिंग डिस्प्ले मेथड का ऑब्जेक्ट बनाते समय, आउटपुट बी देगा। क्लास ए डिस्प्ले मेथड को क्लास बी डिस्प्ले मेथड द्वारा ओवरराइड किया जाता है। तो, आउटपुट बी है।
जब एक ही नाम और समान पैरामीटर के साथ दो अलग-अलग वर्गों में विधियां हों, और वे विरासत से जुड़े हों तो इसे ओवरराइडिंग के रूप में जाना जाता है।इसे लेट बाइंडिंग, डायनेमिक बाइंडिंग, रनटाइम पॉलीमॉर्फिज्म के रूप में भी जाना जाता है। ओवरलोडिंग और ओवरराइडिंग को पॉलीमॉर्फिज्म कहा जाता है। ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में यह एक प्रमुख अवधारणा है।
ओओपी में वंशानुक्रम क्या है?
जावा में लिखे गए निम्न प्रोग्राम को देखें।
चित्र 03: वंशानुक्रम का उदाहरण
उपरोक्त प्रोग्राम के अनुसार, क्लास ए में मेथड सम () है और क्लास बी में मेथड सब () है।
कक्षा ए की योग () विधि का उपयोग कक्षा बी में विस्तृत कीवर्ड का उपयोग करके किया जा सकता है। एक नया वर्ग बनाने के लिए मौजूदा वर्ग में गुणों और विधियों का पुन: उपयोग करना वंशानुक्रम के रूप में जाना जाता है। यहां तक कि कक्षा बी में कोई योग () विधि नहीं है; यह कक्षा ए से विरासत में मिला है। विरासत कोड पुन: प्रयोज्यता के लिए उपयोगी है। पुराने वर्ग को बेस क्लास, सुपरक्लास या पैरेंट क्लास कहा जाता है।व्युत्पन्न वर्ग को उपवर्ग या बाल वर्ग कहा जाता है।
विरासत के प्रकार
विरासत कई प्रकार की होती है। वे सिंगल-लेवल इनहेरिटेंस, मल्टी-लेवल इनहेरिटेंस, मल्टीपल इनहेरिटेंस, पदानुक्रमित इनहेरिटेंस और हाइब्रिड इनहेरिटेंस हैं।
एकल विरासत
सिंगल इनहेरिटेंस में एक सुपर क्लास और एक सब क्लास होती है। अगर क्लास ए सुपर क्लास है और क्लास बी सब क्लास है, तो क्लास ए के सभी गुण और तरीके क्लास बी द्वारा एक्सेस किए जा सकते हैं। केवल एक लेवल है; इसलिए, इसे सिंगल-लेवल इनहेरिटेंस कहा जाता है।
बहु स्तरीय विरासत
बहुस्तरीय वंशानुक्रम में तीन स्तर की कक्षाएं होती हैं। इंटरमीडिएट क्लास को सुपर क्लास से विरासत में मिला है। उपवर्ग मध्यवर्ती वर्ग से विरासत में मिला है। यदि ए, बी और सी के रूप में तीन वर्ग हैं और ए सुपर क्लास है और बी इंटरमीडिएट क्लास है। फिर बी को ए से और सी को बी से विरासत में मिला है, यह एक बहु-स्तरीय विरासत है।
एकाधिक विरासत
मल्टीपल इनहेरिटेंस में कई सुपर क्लास और एक सब क्लास होते हैं। यदि ए, बी, सी नामक तीन सुपर क्लास हैं और डी सब क्लास है, तो क्लास डी ए, बी और सी से इनहेरिट कर सकता है। प्रोग्रामिंग लैंग्वेज सी ++ में मल्टीपल इनहेरिटेंस समर्थित है। यह जावा या सीजैसी प्रोग्रामिंग भाषाओं में समर्थित नहीं है। इन भाषाओं में एकाधिक वंशानुक्रम को लागू करने के लिए इंटरफेस का उपयोग किया जाता है।
पदानुक्रमित वंशानुक्रम
अगर ए को सुपर क्लास कहा जाता है और बी, सी सब क्लास हैं, तो वे सब क्लास क्लास ए के गुणों और विधियों को इनहेरिट कर सकते हैं। उस तरह के इनहेरिटेंस को पदानुक्रमिक इनहेरिटेंस के रूप में जाना जाता है।
हाइब्रिड इनहेरिटेंस
एक और विशेष वंशानुक्रम प्रकार है जिसे हाइब्रिड वंशानुक्रम के रूप में जाना जाता है। यह बहु-स्तरीय और एकाधिक वंशानुक्रम का एक संयोजन है। यदि ए, बी, सी और डी वर्ग हैं और बी ए से विरासत में है और डी दोनों बी और सी से विरासत में है, तो यह एक हाइब्रिड विरासत है।
ओओपी में बहुरूपता और वंशानुक्रम के बीच समानताएं क्या हैं?
दोनों ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग की अवधारणाएं हैं।
ओओपी में बहुरूपता और वंशानुक्रम में क्या अंतर है?
ओओपी में बहुरूपता बनाम वंशानुक्रम |
|
बहुरूपता एक वस्तु की कई तरह से व्यवहार करने की क्षमता है। | विरासत एक मौजूदा वर्ग के गुणों और विधियों का उपयोग करके एक नया वर्ग बनाना है। |
उपयोग | |
बहुरूपता का उपयोग वस्तुओं के संकलन समय और रनटाइम पर किस प्रकार के तरीकों को कॉल करने के लिए किया जाता है। | विरासत का उपयोग कोड पुन: प्रयोज्य के लिए किया जाता है। |
कार्यान्वयन | |
बहुरूपता विधियों में कार्यान्वित की जाती है। | वर्गों में वंशानुक्रम क्रियान्वित किया जाता है। |
श्रेणियाँ | |
बहुरूपता को ओवरलोडिंग और ओवरराइडिंग में विभाजित किया जा सकता है। | इनहेरिटेंस को सिंगल-लेवल, मल्टी-लेवल, पदानुक्रमित, हाइब्रिड और मल्टीपल इनहेरिटेंस में विभाजित किया जा सकता है। |
सारांश – OOP में बहुरूपता बनाम वंशानुक्रम
ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में बहुरूपता और वंशानुक्रम प्रमुख अवधारणाएं हैं। OOP में बहुरूपता और वंशानुक्रम के बीच का अंतर यह है कि बहुरूपता कई रूपों के लिए एक सामान्य इंटरफ़ेस है और वंशानुक्रम मौजूदा वर्ग के गुणों और विधियों का उपयोग करके एक नया वर्ग बनाना है। सॉफ्टवेयर विकास में दोनों अवधारणाओं का व्यापक रूप से उपयोग किया जाता है।
ओओपी में पीडीएफ पॉलीमॉर्फिज्म बनाम इनहेरिटेंस डाउनलोड करें
आप इस लेख का पीडीएफ संस्करण डाउनलोड कर सकते हैं और उद्धरण नोट के अनुसार इसे ऑफ़लाइन उद्देश्यों के लिए उपयोग कर सकते हैं। कृपया पीडीएफ संस्करण यहां डाउनलोड करें ओओपी में बहुरूपता और विरासत के बीच अंतर