Inheritance
Ek class extends se doosri class se inherit kar sakta hai, khud ba khud 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 ke aap parent class ke version ko replace karna chahte hain — yeh optional hai, lekin yeh real ghaltiyan pakarta 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, kyunke 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 tareeqa alag alag classes mein shared behavior describe karne ka.
Practice exercise
Ek class Animal define karein jiska ek field name ho aur ek method speak() ho jo name + " makes a sound" wapas kare. Ek class Cat define karein jo Animal se extend kare aur speak() ko override kar ke name + " meows" wapas kare. "Whiskers" naam ka ek Cat banayein aur uska speak() print karein.