"नमस्कार, अमीगो! मैं आपको मेथड ओवरलोडिंग के बारे में बताने जा रहा हूँ ।"

"आप उन्हें ओवरलोड भी कर सकते हैं? क्या दिन है!"

"आप उनके साथ बहुत कुछ कर सकते हैं, लेकिन हम अभी उसमें नहीं जाएंगे।"

"यह एक सौदा है।"

"ओवरलोडिंग एक बहुत ही सरल ऑपरेशन है। वास्तव में, यह विधियों पर एक ऑपरेशन भी नहीं है, हालांकि इसे कभी-कभी एक भयावह नाम से संदर्भित किया जाता है: पैरामीट्रिक बहुरूपता ।"

आपको याद रखने वाली बात यह है कि कक्षा में प्रत्येक विधि का एक अद्वितीय नाम होना चाहिए।

"हाँ मुझे पता हे।"

"ठीक है, यह पूरी तरह से सच नहीं है। मेरा मतलब है, यह बिल्कुल भी सच नहीं है। एक विधि के लिए एक अद्वितीय नाम नहीं है। जो अद्वितीय होना चाहिए वह एक विधि नाम और उसके मापदंडों के प्रकार का संयोजन है। यह संयोजन भी है एक विधि हस्ताक्षर के रूप में जाना जाता है।"

कोड टिप्पणियाँ
public void print();
public void print2();
इसकी अनुमति है। दो विधियों के अद्वितीय नाम हैं।
public void print();
public void print(int n);
और इसकी अनुमति भी है। दो विधियों में अद्वितीय नाम (हस्ताक्षर) हैं।
public void print(int n, int n2);
public void print(int n);
विधि के नाम अभी भी यहाँ अद्वितीय हैं।
public int print(int a);
public void print(int n);
लेकिन इसकी अनुमति नहीं है। विधियाँ अद्वितीय नहीं हैं, भले ही विभिन्न प्रकार पारित किए जा रहे हों।
public int print(int a, long b);
public long print(long b, int a);
लेकिन इसकी अनुमति है। विधि पैरामीटर अद्वितीय हैं।

"मैंने इसे पहले ही कहीं देखा है।"

"हाँ। जब आप टाइप करते हैं" System.out.println ", IntelliJ IDEA प्रिंट विधियों के कुछ दर्जन संस्करणों का सुझाव देता है जो विभिन्न मापदंडों का उपयोग करते हैं। कंपाइलर बस पहचानता है और फिर आपके द्वारा पास किए गए पैरामीटर के प्रकार के आधार पर आवश्यक विधि को कॉल करता है।"

"यह इतना कठिन नहीं है। लेकिन यह बहुरूपता नहीं है।"

"या अधिक सटीक रूप से, यह अधिभावी विधि नहीं है।"

वैसे, मैं यह बताना चाहता हूं कि पैरामीटर नाम अप्रासंगिक हैं। वे संकलन के दौरान खो जाते हैं। एक बार किसी विधि का अनुपालन हो जाने के बाद, केवल उसका नाम और पैरामीटर प्रकार ज्ञात होते हैं।