Abstraction
Abstraction complex implementation को छुपाकर सिर्फ़ ज़रूरी चीज़ें दिखाता है।
abstract class या interface से हम "क्या करना है" बताते हैं, "कैसे करना है" वो implementing class decide करती है।
abstract class Shape {
abstract double area();
}
class Circle extends Shape {
double r;
double area() { return 3.14 * r * r; }
}abstract class ko directly "new" nahi kar sakte (new Shape() error dega agar Shape abstract hai) — sirf uski concrete (non-abstract) subclasses ko instantiate kar sakte ho. Isme abstract methods (bina body ke, sirf signature — abstract double area();) aur normal methods (with body) dono ho sakte hain.
Jo bhi class isse extend karti hai, use saare abstract methods implement karne hi padenge — warna wo child class bhi abstract honi chahiye (aage pass kar di gayi responsibility).
abstract class Shape {
abstract double area(); // no body
void display() { // normal method, body hai
System.out.println("Area: " + area());
}
}Jab related classes ke beech kuch common code share karna ho (jaise sab Shapes ka display() method same ho sakta hai — ek hi jagah likha), aur kuch behavior har child ko khud define karna ho (area() alag formula har shape ki — Circle ka formula alag, Square ka alag).
Interface ke ulat, abstract class mein "half-done" implementation already hoti hai — isliye ye tab best fit hai jab classes genuinely related hon (IS-A relationship strong ho), na ki sirf ek common capability share kar rahi hon.
Ye dono alag concepts hain jo aksar confuse hote hain, especially interviews mein. Encapsulation "kaise" (data ko protect/bundle karna, private+getter/setter) ke baare mein hai — implementation-level detail.
Abstraction "kya dikhana hai" (complexity chhupana, sirf essential interface dikhana) ke baare mein hai — design-level decision. Ek car chalate waqt steering wheel dikhna (Abstraction — sirf zaroori controls) aur engine parts private rehna (Encapsulation — internal details protected) — dono saath chalte hain lekin alag purpose serve karte hain.
| Abstraction | Encapsulation | |
|---|---|---|
| Focus | Kya dikhana hai (design) | Kaise protect karna hai (implementation) |
| Achieve hota hai | abstract class, interface se | private fields + getter/setter se |
| Example | Car ka steering — internals hidden | Account.balance private hona |