Inheritance
Inheritance क्या है
Inheritance एक class को दूसरी के fields और methods दोबारा इस्तेमाल करने देता है। Child class extends से parent class से inherit करती है, parent का सब कुछ साथ में अपने जोड़ पाकर। यह साझा code दोहराने से बचाता है और "is-a" संबंध बनाता है (Dog एक Animal है)।
class Dog extends Animal मतलब Dog, Animal से सब कुछ inherit करता है।extends इस्तेमाल
class Animal {
void eat() { System.out.println("eating"); }
}
class Dog extends Animal {
void bark() { System.out.println("woof"); }
}
// इस्तेमाल:
Dog d = new Dog();
d.eat(); // Animal से inherited
d.bark(); // अपना
woof
Dog extends Animal Dog को eat() method मुफ़्त देता है, और Dog अपना bark() जोड़ता है। एक keyword parent की सारी क्षमताएँ खोल देता है।
Method override करना
class Animal {
void sound() { System.out.println("Some sound"); }
}
class Cat extends Animal {
void sound() { // override
System.out.println("Meow");
}
}
// इस्तेमाल:
new Cat().sound();
Child उसी नाम का अपना define करके inherited method बदल सकती है — यह overriding है। Cat object के लिए, parent के बजाय child का sound() चलता है।
Inheritance में super
class Person {
Person(String name) { System.out.println("Person: " + name); }
}
class Student extends Person {
Student(String name) {
super(name); // parent constructor call करो
System.out.println("Student created");
}
}
new Student("Aman");
Student created
super(name) पहले parent का constructor call करता है, फिर child जारी रहता है। super parent की override की method भी super.method() से call करता है।
Inheritance के प्रकार
- Single: एक child, एक parent (Dog → Animal)।
- Multilevel: एक श्रृंखला (Puppy → Dog → Animal)।
- Hierarchical: एक parent के कई children (Dog और Cat दोनों → Animal)।
Java इन्हें classes से support करती है। यह classes का multiple inheritance (एक child, कई parents) support नहीं करती।
Multiple inheritance क्यों नहीं
Java एक class को एक साथ दो classes extend करने नहीं देती, diamond problem बचाने को: अगर दोनों parents की एक ही नाम वाली method हो, child तय नहीं कर सकता कौन-सी इस्तेमाल करे। कई स्रोतों से व्यवहार जोड़ने को, Java interfaces इस्तेमाल करती है, जो इस अस्पष्टता से बचते हैं।
आम गलतियाँ
- गलत parent नाम।
extends Animalको Animal मौजूद और सही spelling चाहिए। - गलती से override करना। Parent method नाम दोबारा इस्तेमाल उसे बदल देता है — अनचाहा हो तो rename कीजिए।
- Parent setup को
super(...)भूलना। Parameterised parent constructor को call करना ज़रूरी। - दो classes extend करने की कोशिश। Allowed नहीं — इसके बजाय interfaces इस्तेमाल कीजिए।
सारांश
- Inheritance parent के fields और methods को
extendsसे दोबारा इस्तेमाल करता है। - Child को parent के members साथ में अपने मिलते हैं।
- Overriding उसी नाम से inherited method बदलता है।
superparent का constructor या override की method call करता है।- Java single, multilevel और hierarchical allow करती है — classes का multiple inheritance नहीं।
आगे, this और super गहराई से इस्तेमाल कीजिए, या व्यवहार जोड़िए abstraction और interfaces से।
अक्सर पूछे जाने वाले प्रश्न (FAQ)
Java में inheritance क्या है?
extends keyword से दोबारा इस्तेमाल करने देता है। Child को parent का सब कुछ मिलता है, साथ में जो वो जोड़े, जो code दोहराने से बचाता है।Method overriding क्या है?
Java में inheritance के प्रकार क्या हैं?
Java classes का multiple inheritance क्यों allow नहीं करती?
Inheritance में super keyword क्या करता है?
super child को उसके parent तक पहुँच देता है — parent का constructor super(...) से, या parent की override की method super.method() से call करके। यह child को उस parent से जोड़ता है जिसे वो extend करता है।