Java Method Overloading एक ऐसी सुविधा है जो एक class को एक ही नाम वाली multiple methods को एक अलग argument list के साथ रखने की अनुमति देती है। यह जावा में constructor overloading के समान है, जो एक class को एक अलग argument list के साथ एक से अधिक constructor रखने की अनुमति देता है। argument list को parameter list के रूप में भी जाना जाता है।
Method Overloading और Method Overriding
Method Overloading को और करीब से जानने के लिए सबसे पहले हम Method Overloading और Method Overriding दोनों के अंतर के बारे में समझ लेते है।
Method Overloading | Method Overriding |
---|---|
(a) Same Method Name | (a) Same Method Name |
(b) Same Class | (b) Different Class |
(c) Different Arguments
|
(c) Same Arguments
|
जैसा की ऊपर दिए गए टेबल से समझ सकते है की Method Overloading में एक से ज्यादा method के Name और Class, same रह सकते है लेकिन इनके Arguments अलग होने चाहिए। चलिए निचे देख लेते है की Method Overloading के अलग अलग से कौन से तरीके है।
Method Overloading के तरीके
(a) Number of Arguments बदल कर
(b) Arguments के data type बदल कर
(c) Arguments के sequence को बदल कर
By changing number of arguments
अब इसमें होता यह है की हमें arguments की संख्या को बदलना पड़ता है, जैसे की अगर पहला method में 1 int
है तो दुसरे method में भी 1 int
कभी भी नहीं हो सकता है, दुसरे method में 1 int
से ज्यादा होना चाहिए।
निचे हम एक उद्धारण से समझते है, इसमें हम int
data type का उपयोग करेंगे, number of parameters को बदल कर।
public class MyClass {
void show(int x) {
System.out.println("This is the First method");
}
void show(int x, int y) {
System.out.println("This is the Second method");
}
public static void main(String[] args) {
MyClass myObj = new MyClass();
myObj.show(20);
}
}
// Result: This is First Method
उद्धारण को समझते हैं
1st : हमने 2 method बनाये जिनमे दोनों के name और class एक ही है show
और Myclass
.
2nd : अब हमने दोनों method show
के arguments में एक ही data type का उपयोग किया वह हैं int
.
3rd : लेकिन जब हमने arguments डाले तो तो उनका numbers बदल दिया यानि की पहले वाले method में 1 ही arguments पास किये जबकि दुसरे वाले method में हमने 2 arguments पास किये, और हमने ऐसा क्यू किया इसे समझते हैं।
मान लेते है की हमने दोनों method में arguments भी एक बराबर ही पास किये है यानि की 1 ही arguments. अब finally जब आप show
को कॉल करते है, तो अब आप ही बताये Java कौन सा method को कॉल करेगा, 1 arguments वाला या 2 arguments वाला और यही पर Java कंफ्यूज हो जाता है। तो Java कंफ्यूज ना हो जाये इसलिए numbers of arguments बदल दिए जाते है ताकि जब हम method को कॉल करे तो Java को आसानी हो कि कौन सा method को प्रिंट कराना है, 1 arguments वाला या 2 arguments वाला।
उपरोक्त उदाहरणों में, हमने method को overload करने के लिए arguments की संख्या को बदल दिया है। हमने दो माध्यमों public modifier और static
कीवर्ड का उपयोग करके method को overload कर दिया है।
By changing the data type
नीचे दिए गए उदाहरण में, हम int
और String
data type का उपयोग करने जा रहे हैं।
public class MyClass {
void show(int age) {
System.out.println("This is the First method");
}
void show(String age) {
System.out.println("This is the Second method");
}
public static void main(String[] args) {
MyClass myObj = new MyClass();
myObj.show("Twenty-Eight");
}
}
// Result: This is Second Method
उपरोक्त उदाहरणों में, numbers of arguments तो same है परन्तु इसमें data types बदल दिए गए हैं। इसमें int
और String
data types का उपयोग किया गया है, जिससे method को कॉल करते समय Java असानी से समझ जायेगा की कौन सा method को प्रिंट कराना हैं।
By Changing sequence of arguments
इसे हम निचे दिए गए उदाहरण से समझते हैं।
public class MyClass {
void student(int id, String name) {
System.out.println("This is the First method");
}
void student(String name, int id) {
System.out.println("This is the Second method");
}
public static void main(String[] args) {
MyClass myObj = new MyClass();
myObj.student("Ram", 15);
}
}
// Result: This is the Second method
उपरोक्त उदाहरणों में, हमने data types का sequence को बदला है एक method में पहले int
फिर उसके बाद String
data types पास किया है, जबकि दुसरे method में हमने उसके विपरीत पहले में String
फिर उसके बाद int
पास किया है।
आपने देखा होगा की मैंने method को कॉल करते समय पहले second method को कॉल किया है उसके बाद first method को। बतादे इससे कोई फर्क नहीं पड़ता है, फर्क पड़ता है तो सिर्फ उनके arguments से।