जावा विधि ओवरलोडिंग (उदाहरणों के साथ)

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

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

 void func () (…) void func (int a) (…) फ्लोट func (double a) (…) float func (int a, float b) (…)

यहां, func()विधि अतिभारित है। इन विधियों का एक ही नाम है, लेकिन विभिन्न तर्कों को स्वीकार करते हैं।

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

ओवरलोडिंग का तरीका क्यों?

मान लीजिए, आपको दिए गए नंबरों को जोड़ना है, लेकिन किसी भी संख्या में तर्क हो सकते हैं (चलो सरलता के लिए 2 या 3 तर्क कहें)।

कार्य को पूरा करने के लिए, आप क्रमशः दो तरीके sum2num(int, int)और sum3num(int, int, int)दो और तीन पैरामीटर बना सकते हैं । हालांकि, अन्य प्रोग्रामर, साथ ही भविष्य में आप भ्रमित हो सकते हैं क्योंकि दोनों तरीकों का व्यवहार समान है लेकिन वे नाम से भिन्न हैं।

इस कार्य को पूरा करने का बेहतर तरीका तरीकों को ओवरलोड करना है। और, पारित तर्क के आधार पर, अतिभारित तरीकों में से एक कहा जाता है। यह कार्यक्रम की पठनीयता को बढ़ाने में मदद करता है।

जावा में ओवरलोडिंग का तरीका कैसे करें?

ओवरलोडिंग विधि करने के विभिन्न तरीके यहां दिए गए हैं:

1. तर्कों की संख्या को बदलकर ओवरलोडिंग

 class MethodOverloading ( private static void display(int a)( System.out.println("Arguments: " + a); ) private static void display(int a, int b)( System.out.println("Arguments: " + a + " and " + b); ) public static void main(String() args) ( display(1); display(1, 4); ) )

आउटपुट :

 तर्क: १ तर्क: १ और ४

2. डेटा प्रकार के मापदंडों को बदलकर

 class MethodOverloading ( // this method accepts int private static void display(int a)( System.out.println("Got Integer data."); ) // this method accepts String object private static void display(String a)( System.out.println("Got String object."); ) public static void main(String() args) ( display(1); display("Hello"); ) ) 

आउटपुट :

पूर्णांक डेटा मिला है। स्ट्रिंग वस्तु मिल गई।

यहाँ, दोनों अतिभारित तरीके एक तर्क को स्वीकार करते हैं। हालांकि, एक प्रकार के तर्क को intस्वीकार करता है जबकि अन्य Stringवस्तु को स्वीकार करता है।

आइए एक वास्तविक दुनिया उदाहरण देखें:

 class HelperService ( private String formatNumber(int value) ( return String.format("%d", value); ) private String formatNumber(double value) ( return String.format("%.3f", value); ) private String formatNumber(String value) ( return String.format("%.2f", Double.parseDouble(value)); ) public static void main(String() args) ( HelperService hs = new HelperService(); System.out.println(hs.formatNumber(500)); System.out.println(hs.formatNumber(89.9934)); System.out.println(hs.formatNumber("550")); ) )

जब आप प्रोग्राम चलाते हैं, तो आउटपुट होगा:

 500 89.993 550.00

नोट : जावा में, आप निर्माणकर्ताओं को तरीकों की तरह ही ओवरलोड भी कर सकते हैं।

अनुशंसित पढ़ना: जावा कन्स्ट्रक्टर ओवरलोडिंग

महत्वपूर्ण बिंदु

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

दिलचस्प लेख...