Java Overloading and Overriding In Hindi :
Java - Method Overloading :
Method Overloading में एक class पर एक ही नाम के multiple method हो सकते है | लेकिन उन methods की arguments की संख्या और उनका type अलग-अलग होता है |
Program पर Constructor Overloading भी किया जाता है |
Method Overloading का return-type से कोई लेना-देना नहीं होता |
For Example :
अगर program में एक class के अन्दर same signature के दो methods होते है तो Ambiguity Error आ जाता है , चाहे उनका return-type अलग हो या ना हो | इसका मतलब ये है कि, return-type से Method Overloading का कोई सम्बन्ध नहीं है |
Profit of Java - Method Overloading :
- मेथड ओवरलोडिंग program की readability को बढ़ा देता है.
- यह programmers को flexibility प्रदान करता है जिससे वे समान method को different type के data के लिए call कर सकते हैं.
- इससे कोड clean दिखता है.
- यह execution time को कम कर देता है क्योंकि इसमें binding, compilation time में ही हो जाती है.
- इससे हम code को दुबारा से use कर सकते हैं, जिससे memory की बचत होती है.
- method overloading कोड की complexity को कम करता है.
Java Method को दो प्रकार से Overload किया जाता है ?
- By changing number of arguments (arguments की संख्या को बदल के)
- By changing data types (data types को change करके)
By changing number of arguments :
नीचे दिए गये example में हमारे पास दो methods हैं, पहले method में दो arguments हैं और दूसरे method में तीन arguments हैं |
Example :
class Demo
{
void multiply(int l, int b)
{
System.out.println("Result is"+(l*b)) ;
}
void multiply(int l, int b,int h)
{
System.out.println("Result is"+(l*b*h));
}
public static void main(String[] args)
{
Demo ar = new Demo();
ar.multiply(8,5);
ar.multiply(4,6,2);
}
}
Output :
Result is 40
Result is 48.
By changing data types :
Example :
class Adder{
static int add(int a, int b){return a+b;}
static double add(double a, double b){return a+b;}
}
class TestOverloading2{
public static void main(String[] args){
System.out.println(Adder.add(17,13));
System.out.println(Adder.add(10.4,10.6));
}
}
Output :
30, 21
- methods के return type को change करके मेथड ओवरलोडिंग नहीं की जा सकती |
- method overloading का सबसे महत्वपूर्ण rule यह है कि दो overloaded methods के पास अलग-अलग parameters होने चाहिए |
Java - Method Overriding :
Method Overriding में एक program पर same name के methods होते है | इन methods की signature एक जैसी ही होती है | लेकिन ये अलग-अलग class में स्थित होते है |
For Example :
अगर parent class का method और उसके sub-class का method का नाम और signature एक जैसा हो तो उसे Method Overriding कहते है | Method Overriding ये RunTime Polymorphism का एक अच्छा उदाहरण है |
Rules of method overriding in Hindi
जावा में मेथड ओवरराइडिंग के कुछ नियम होते हैं, जो कि निम्नलिखित हैं:-
- child class और parent class दोनों के लिए method का नाम same (एकसमान) होना चाहिए.
- parent-class और child class दोनों के पास same (समान) return type और same parameter list होने चाहिए.
- final और static के रूप में declare की गयी method को हम override नहीं कर सकते.
- child class method के access modifiers, parent class के method से ज्यादा restrictive (प्रतिबंधित) नहीं होने चाहिए. उदाहरण के लिए – यदि parent-class method को हमने public declare किया है तो हम child-class को private और protected के रूप में declare नहीं कर सकते.
- instance methods को override किया जा सकता है केवल तब जब वे subclass के द्वारा inherit हों.
- यदि एक method को inherit नहीं किया जा सकता तो उसे override भी नहीं किया जा सकता.
- हमें हमेशा parent class की abstract methods को override करना चाहिए.
- constructors को override नहीं किया जा सकता है.
Method Overriding का उदाहरण :
तो चलिए इसको अब एक simple example के द्वारा समझते हैं. माना कि हमारे पास दो class है. एक child class Dog और parent class Animal, Dog क्लास जो है वह Animal क्लास को inherit (extend) करती है. दोनों class के पास एकसमान मेथड void eat() है. Dog क्लास eat() मेथड को override करती है. नीचे आप इसका program देख सकते हैं:-
Example :
class Animal{
//Overridden method
public void eat()
{
System.out.println("Animal is eating");
}
}
class Dog extends Animal{
//Overriding method
public void eat(){
System.out.println("Dog is eating");
}
public static void main( String args[]) {
Dog obj = new Dog();
//This will call the child class version of eat()
obj.eat();
}
}
Output :
Dog is eating.
Difference Between Method Overloading and Method Overriding in Hindi :
मेथड ओवरलोडिंग और मेथड ओवरराइडिंग के बीच अंतर निम्नलिखित है:-
Method overloading | Method overriding |
इसमें पैरामीटर different होना चाहिए परन्तु नाम same होना चाहिए. | इसमें नाम और पैरामीटर दोनों same होने चाहिए. |
यह compile time polymorphism है. | यह run time polymorphism है. |
यह code की readability को बढाता है. | यह code की reusability को बढाता है. |
इसमें return type समान हो सकता है और नही भी सकता. | इसमें return type एकसमान होना चाहिए. |
मेथड ओवरलोडिंग को inheritance की जरूरत पढ़ भी सकती है और नहीं भी. | मेथड ओवरराइडिंग को हमेशा inheritance की आवश्यकता होती है. |
इसे static method का प्रयोग करके भी perform किया जा सकता है. | इसे static method का प्रयोग करके perform नहीं किया जा सकता है. |
यह static binding का प्रयोग करता है. | यह dynamic binding का प्रयोग करता है. |
इसमें access modifiers और non access modifiers को change किया जा सकता है. | इसमें access modifiers और non access modifiers को बदल नहीं सकते हैं. |
यह एक code refinement तकनीक है. | यह एक code replacement तकनीक है. |
private, static और final method को overload किया जा सकता है. | private, static और final methods को override नहीं किया जा सकता. |
इसे compile time polymorphism और static polymorphism या early binding भी कहते हैं. | इसे run time polymorphism और dynamic polymorphism या late binding भी कहते हैं. |
इसका example:-class OverloadingDemo{ static int add1(int x,int y){return x+y;} static int add1(int x,int y,int z){return x+y+z;} } | इसका example-class OverridingDemo{ void a() {System.out.println("A");}} class b extends c {void a(){System.out.println("B");} |
Method Overriding में Super Keyword :
Example :
class Animal {
public void move() {
System.out.println("Animals can move");
}
}
class Dog extends Animal {
public void move() {
super.move(); // invokes the super class method
System.out.println("Dogs can walk and run");
}
}
public class TestDog {
public static void main(String args[]) {
Animal b = new Dog(); // Animal reference but Dog object
b.move(); // runs the method in Dog class
}
}
Output :
Animals can move.
Dogs can walk and run.