Abstract Classes
Ek abstract class abstract methods declare kar sakta hai, interface methods ki tarah, bina kisi body ke — lekin interface ke ulat, yeh real fields aur fully-implemented methods bhi rakh sakta hai, aur ek subclass ko sirf abstract parts implement karne padte hain. Vehicle ko directly new se instantiate nahi kiya ja sakta; sirf ek concrete subclass jaise Car, jo describe() supply karta hai, kiya ja sakta hai.
public class Main {
static abstract class Vehicle {
abstract String describe();
void printDescription() {
System.out.println(describe());
}
}
static class Car extends Vehicle {
String describe() {
return "A car with four wheels";
}
}
public static void main(String[] args) {
Vehicle v = new Car();
v.printDescription();
}
}A car with four wheels
printDescription() khud Vehicle mein fully implement hai aur Car mein bina kisi change ke inherit hota hai, jabki describe() ko chahe jo concrete subclass Vehicle ko extend kare, wahan se aana chahiye — abstract classes aapko contract ke sath real code share karne dete hain, jo ek plain interface aapke liye nahi kar sakta.
Aage: exception handling — try, catch, checked exceptions, aur ek real unreported-exception compile error kaisa dikhta hai.
Practice exercise
Ek abstract class Shape define karo jiska ek abstract method area() ho. Ek class Square define karo jo Shape se extend kare, jiska ek field side ho aur ek area() method jo side * side return kare. side 5 wala ek Square banao aur uska area() print karo.