ओवरराइडिंग और ओवरलोडिंग के बीच का अंतर

Anonim

ओवरराइडिंग बनाम ओवरलोडिंग

विधि ओवरराइडिंग और विधि ओवरलोडिंग दो प्रोग्रामिंग भाषाओं में पाया गया दो अवधारणाओं / तकनीकों / सुविधा है। दोनों अवधारणाओं को प्रोग्रामर को उसी नाम के तरीकों के लिए अलग-अलग कार्यान्वयन करने की अनुमति मिलती है। विधि ओवरराइड करने से प्रोग्रामर को उप-कक्षा के भीतर एक वैकल्पिक कार्यान्वयन प्रदान करने की अनुमति देता है जो कि उसके सुपर क्लास में पहले से ही परिभाषित की गई विधि है। विधि ओवरलोडिंग प्रोग्रामर को एक ही नाम (एक ही कक्षा में) के साथ कई विधियों के लिए विभिन्न कार्यान्वयन प्रदान करने की अनुमति देता है।

ओवरराइडिंग क्या है?

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

ओवरलोडिंग क्या है?

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

ओवरराइडिंग और ओवरलोडिंग में क्या अंतर है?

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

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