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



यह आलेख जावा में सुपर ओवरराइडिंग और विभिन्न नियमों सहित विभिन्न उदाहरणों के साथ विधि अधिभार और ओवरराइडिंग के बीच प्रमुख अंतरों को शामिल करता है।

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

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

मेथड ओवरलोडिंग विधि को वही नाम रखने की अनुमति देता है जो तर्कों या तर्क प्रकारों के आधार पर भिन्न होता है। यह संकलन-समय के बहुरूपता से संबंधित हो सकता है। निम्नलिखित कुछ संकेत हैं जिन्हें हमें जावा में तरीकों को ओवरलोड करते समय ध्यान में रखना है।





  • हम एक वापसी प्रकार अधिभार नहीं कर सकते।

    जावा में द्विआधारी खोज क्या है
  • हालांकि हम ओवरलोड कर सकते हैं , तर्क या इनपुट पैरामीटर अलग होना चाहिए।



  • यदि वे केवल एक स्थैतिक कीवर्ड द्वारा भिन्न होते हैं तो हम दो विधियों को अधिभारित नहीं कर सकते।

  • अन्य स्थिर तरीकों की तरह, मुख्य () विधि भी ओवरलोड हो सकती है।

मेथड ओवरलोडिंग - जावा में ओवरलोडिंग और ओवरराइड करने की विधि



आइए एक सरल कार्यक्रम पर नज़र डालते हैं कि यह समझने के लिए कि अजगर में किस तरह से ओवरलोडिंग काम करती है।

सार्वजनिक वर्ग Div {सार्वजनिक int div (int a, int b) {वापसी (a / b)} सार्वजनिक int div (int a, int b, int c) {वापसी ((a + b) / c)} सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग args []) {Div ob = new Div () ob.div (10, 2) ob.div (10, 2, 3)}}
 आउटपुट: ५ ४

उपरोक्त कार्यक्रम में, हमारे पास एक ही नाम के साथ दो तरीके हैं लेकिन विभिन्न पैरामीटर। इस तरह से ओवरलोडिंग का तरीका काम करता है ।

क्यों विधि अधिभार?

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

ओवरलोडिंग मुख्य () विधि:

निम्नलिखित जावा में मुख्य () विधि को अधिभारित करने के लिए एक उदाहरण है।

सार्वजनिक वर्ग Edureka {सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] args) {System.out.println ('hello') Edureka.main ('edurekan')} सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग arg1) {System.out.println (') आपका स्वागत है '+ arg1) Edureka.main (' स्वागत ',' to edureka ')} सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग arg1, स्ट्रिंग arg2) {System.out.println (' हैलो ', + arg1, + arg2)}}}
 आउटपुट: हैलो, आपका स्वागत है edurekan हैलो, edureka में आपका स्वागत है

विधि अधिभार उदाहरण

  • जावा में स्थिर तरीकों को अधिभार करने का कार्यक्रम।
पब्लिक क्लास टेस्ट {public static int func (int a) {return 100} public static char func (int a, int b) {वापसी) edureka ’} सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग args []) {System.out.print_n func (1)) System.out.println (func (1,3))}}
 आउटपुट: 100 edureka
  • एक ही नाम के साथ तीन तरीकों को ओवरलोड करने का कार्यक्रम।
पब्लिक क्लास ऐड {पब्लिक इंट ऐड (इंट ए, इंट बी) {रिटर्न (ए + बी)} पब्लिक इंट ऐड (इंट ए, इंट बी, इंट सी) {रिटर्न (ए + बी + सी)} पब्लिक डबल ऐड (डबल a, डबल b) {वापसी (a + b)} सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग args []) {Add ob = new Add () ob.add (15,25) ob.add (15,25,35) ob .add (11.5, 22.5)}}
 आउटपुट: ४० 34५ ३४

जावा में मेथड ओवरराइडिंग क्या है?

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

यदि चाइल्ड क्लास ऑब्जेक्ट विधि को कॉल करता है, तो चाइल्ड क्लास विधि पैरेंट क्लास विधि को ओवरराइड करेगी। अन्यथा, यदि पैरेंट क्लास ऑब्जेक्ट विधि को कॉल करता है, तो पैरेंट क्लास पद्धति निष्पादित की जाएगी।

ओवरराइडिंग विधि भी जावा में रनटाइम बहुरूपता को लागू करने में मदद करती है। आइए एक सरल उदाहरण लेते हैं कि यह समझने का तरीका है कि जावा में कार्य करने की विधि क्या है।

क्लास पेरेंट {void view () {System.out.println ('यह एक पैरेंट क्लास मेथड है)}} क्लास चाइल्ड पैरंट्स को एक्सटेंड करता है {void view () {System.out.println (' यह एक चाइल्ड क्लास मेथड है)}} सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग आर्ग्स []) {पेरेंट ओब = न्यू पेरेंट () ओब्स्च्यू () पेरेंट ओबी १ = न्यू चाइल्ड () ओब १.व्यू ()
 आउटपुट: यह एक चाइल्ड क्लास विधि है

विधि ओवरराइडिंग के लिए नियम

  • पहुंच संपादित करें केवल ओवरराइड विधि के लिए अधिक पहुँच की अनुमति दे सकता है।

  • सेवा मेरे अंतिम विधि ओवरराइड करने की विधि का समर्थन नहीं करती है।

    शेफ और ansible के बीच अंतर
  • एक स्थैतिक विधि को ओवरराइड नहीं किया जा सकता है।

  • निजी तरीकों को ओवरराइड नहीं किया जा सकता है।

  • ओवरराइडिंग विधि का रिटर्न प्रकार समान होना चाहिए।

    क्या जावा में append है
  • हम सुपर कीवर्ड का उपयोग करके अभिभावक वर्ग विधि को ओवरराइडिंग विधि में कह सकते हैं।

  • सेवा मेरे बिल्डर ओवरराइड नहीं किया जा सकता है क्योंकि एक बच्चे का वर्ग और एक मूल वर्ग का एक ही नाम के साथ कंस्ट्रक्टर नहीं हो सकता है।

विधि ओवरराइडिंग उदाहरण

  • सुपर कीवर्ड का उपयोग करके ओवरराइडिंग दिखाने का कार्यक्रम
क्लास पैरेंट {void शो () {System.out.println ('पैरेंट क्लास मेथड')} क्लास चाइल्ड पैरेंट {void शो () {super.show () System.out.println ('चाइल्ड क्लास मेथड)) को बढ़ाता है। स्थैतिक शून्य मुख्य (स्ट्रिंग args []) {अभिभावक ob = नया बच्चा () ob.show ()}}
 आउटपुट: पैरेंट क्लास मेथड चाइल्ड क्लास मेथड

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

जावा में विधि अधिभार और ओवरराइडिंग के बीच प्रमुख अंतर हैं।

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

इस ब्लॉग में, हमने विधि अधिभार और विधि के बारे में विस्तार से चर्चा की है। वर्गों, वस्तुओं और अवधारणाओं और विरासत और बहुरूपता जैसी अवधारणाओं की भागीदारी के साथ, जावा में तरीकों को ओवरलोड या ओवरराइड करने का क्या अर्थ है, इसका स्पष्ट विचार प्राप्त करना काफी महत्वपूर्ण हो जाता है।

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

क्या आप हमसे कोई प्रश्न पूछना चाहते हैं? कृपया इस लेख के टिप्पणी अनुभाग में 'जावा में विधि ओवरलोडिंग बनाम विधि ओवरराइडिंग' का उल्लेख करें और हम जल्द से जल्द आपको वापस प्राप्त करेंगे।