Abstract Classes
Ek abstract class abstract methods declare kar sakta hai, interface methods ki tarah, bina kisi body ke — lekin interface ke bar-aks, yeh real fields aur fully-implemented methods bhi rakh sakta hai, aur ek subclass ko sirf abstract parts implement karne parte 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, jabke 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 karein jiska ek abstract method area() ho. Ek class Square define karein jo Shape se extend kare, jiska ek field side ho aur ek area() method jo side * side wapas kare. side 5 wala ek Square banayein aur uska area() print karein.