Free tutorials & notes in Hindi & English · Clean code examples 🧰 मुफ़्त PDF और फ़ोटो टूल्स →
📘 Lesson  ·  Lesson 30

Overloading vs Overriding

दो मिलते-जुलते विचार

Overloading और overriding एक जैसे सुनाई देते हैं पर बहुत अलग हैं। Overloading एक class में एक नाम वाली कई methods होने के बारे में है (अलग parameters)। Overriding child class द्वारा parent की method बदलने के बारे में है। दोनों polymorphism के रूप हैं।

💡 Overload = एक नाम, अलग parameters, एक ही class। Override = एक signature, child parent को बदलता है।

Method overloading

class Calc {
    int add(int a, int b) { return a + b; }
    double add(double a, double b) { return a + b; }
    int add(int a, int b, int c) { return a + b + c; }
}
// इस्तेमाल:
Calc c = new Calc();
System.out.println(c.add(2, 3));       // 5
System.out.println(c.add(2.5, 1.5));   // 4.0
System.out.println(c.add(1, 2, 3));    // 6
5
4.0
6

तीन methods add नाम साझा करती हैं पर parameters में भिन्न हैं। Java arguments से मेल खाता चुनती है — यह overloading है, compile time पर तय।

Method overriding

class Animal {
    void sound() { System.out.println("Some sound"); }
}
class Dog extends Animal {
    @Override
    void sound() { System.out.println("Woof"); }
}
// इस्तेमाल:
Animal a = new Dog();
a.sound();       // Woof (child का version)
Woof

Dog उसी signature के साथ sound() override करता है। भले a Animal typed हो, असली object Dog है, तो child का version चलता है — runtime पर तय।

Compile-time बनाम runtime

  • Overloading = compile-time polymorphism। Compiler argument types से method चुनता है।
  • Overriding = runtime polymorphism। JVM run time पर असली object के आधार पर चुनता है।

इसीलिए overloading को static, और overriding को dynamic polymorphism भी कहते हैं।

आमने-सामने तुलना

बातOverloadingOverriding
कहाँएक ही classParent और child
Parametersभिन्न होने चाहिएएक जैसे होने चाहिए
Method नामएक जैसाएक जैसा
हल होता हैCompile timeRuntime
Inheritance चाहिएनहींहाँ

आम गलतियाँ

  • सिर्फ़ return type बदलना। Overloading को अलग parameters चाहिए, सिर्फ़ अलग return type नहीं।
  • Override करते समय अलग signature। Child method बिल्कुल मेल खानी चाहिए, वरना यह overload बन जाती है।
  • @Override छोड़ना। यह वैकल्पिक है पर signature गलतियाँ जल्दी पकड़ता है।
  • Inheritance बिना overriding की उम्मीद। Overriding को parent-child संबंध चाहिए।

सारांश

  • Overloading: एक नाम, अलग parameters, एक class में (compile time)।
  • Overriding: एक signature, child parent की method बदलता है (runtime)।
  • Overloading को inheritance नहीं चाहिए; overriding को चाहिए।
  • Overloading static polymorphism है; overriding dynamic।
  • Override करते समय गलतियाँ पकड़ने को @Override इस्तेमाल कीजिए।

आगे, inheritance दोहराइए, या methods सुरक्षित दोबारा इस्तेमाल कीजिए Java methods से।

अक्सर पूछे जाने वाले प्रश्न (FAQ)

Overloading और overriding में क्या अंतर है?
Overloading एक ही class में एक नाम पर अलग parameters वाली कई methods होना है। Overriding child class द्वारा उसी नाम और parameters के साथ parent method का अपना version देना है। एक same-class विविधता है; दूसरा parent-child प्रतिस्थापन।
Method overloading क्या है?
Overloading का मतलब कई methods एक नाम साझा करें पर parameters की संख्या या type में भिन्न हों, जैसे add(int, int) और add(double, double)। Java arguments से सही वाला compile time पर चुनती है।
Method overriding क्या है?
Overriding तब है जब subclass inherited method को बिल्कुल उसी signature के साथ फिर से define करे, तो child objects के लिए child का version चलता है। यह runtime polymorphism की बुनियाद है।
Overloading compile-time है या runtime?
Overloading compile time पर हल होता है (static polymorphism भी कहते हैं), क्योंकि compiler argument types से method चुनता है। Overriding runtime पर हल होता है (dynamic polymorphism), असली object के आधार पर।
@Override annotation किसलिए है?
@Override compiler को बताता है आप parent method override करने का इरादा रखते हैं। अगर आपका signature असल में parent method से मेल न खाए, compiler error flag करता है — typos के ख़िलाफ़ सहायक safety जाँच।
← Back to Java Tutorial
🔗

Share this topic with a friend

यह topic किसी दोस्त को भेजें

Found it useful? Send it to a classmate learning the same thing.

अच्छा लगा? जो दोस्त यही सीख रहा है, उसे भेज दीजिए।

💻 लाइव कोड एडिटर

इस पेज के प्रोग्राम यहीं तैयार हैं — चलाएँ, बदलें और सीखें। कुछ भी इंस्टॉल किए बिना।
OneCompiler द्वारा संचालित। कोड एडिटर में अपने आप आ जाता है — Run दबाकर आउटपुट देखें। अगर एडिटर न खुले तो नए टैब में खोलें.
अगला topicfinal, finally, finalize आपकी प्रगति: 30 / 61 (49%) · Lesson 31 / 61 आगे बढ़ें →

यह lesson कैसा लगा?

आपकी राय से हम content और बेहतर बनाते हैं।

अपना review और सुझाव लिखें (वैकल्पिक)

Review approve होने के बाद आपका नाम और शहर इसके साथ public दिख सकते हैं। Email या phone न लिखें।

▶ CodingEasily on YouTube

Video से सीखें – आसान Hindi में

चुनी हुई video: RDBMS भाग 3 – Class XI Commerce IT

▶ Channel subscribe करें