Inheritance
Ek class extends se doosri class se inherit kar sakta hai, automatically uske fields aur methods tak access milte hue. Subclass ke constructor ke andar super(name), parent class ke constructor ko call karta hai, jo zaroori hai subclass constructor ke kuch aur karne se pehle jab parent ke paas koi no-argument constructor na ho.
@Override se Overriding
Ek method ko @Override mark karna compiler ko batata hai ki aap parent class ke version ko replace karna chahte ho — yeh optional hai, lekin yeh real mistakes pakadta hai, jaise ek typo'd method naam jo warna chupke se ek bilkul naya method define kar deta jo woh override karna chahiye tha uski jagah. dog.speak() Dog ka khud ka version call karta hai, Animal ka nahi, kyunki Dog use override karta hai.
public class Main {
static class Animal {
String name;
Animal(String name) {
this.name = name;
}
String speak() {
return name + " makes a sound";
}
}
static class Dog extends Animal {
Dog(String name) {
super(name);
}
@Override
String speak() {
return name + " barks";
}
}
public static void main(String[] args) {
Dog dog = new Dog("Rex");
System.out.println(dog.speak());
}
}Rex barks
Aage: polymorphism aur interfaces — Java ka first-class tarika alag alag classes mein shared behavior describe karne ka.
Practice exercise
Ek class Animal define karo jiska ek field name ho aur ek method speak() ho jo name + " makes a sound" return kare. Ek class Cat define karo jo Animal se extend kare aur speak() ko override karke name + " meows" return kare. "Whiskers" naam ka ek Cat banao aur uska speak() print karo.