Abstraction and Interfaces
Abstraction क्या है
Abstraction का मतलब है details छिपाकर सिर्फ़ जो मायने रखता है वो दिखाना। car का pedal एक सरल interface है — आप उसे engine की अंदरूनी कार्यप्रणाली जाने बिना दबाते हैं। Java में, abstraction abstract classes और interfaces से हासिल होता है, जो बताते हैं क्या करना है, हर class को तय करने देकर कैसे।
Abstract class
abstract class Shape {
abstract double area(); // कोई body नहीं — भरनी ज़रूरी
void describe() { // code वाली normal method
System.out.println("Area: " + area());
}
}
class Circle extends Shape {
double r = 5;
double area() { return 3.14 * r * r; }
}
abstract class सीधे नहीं बनाई जा सकती। इसमें abstract methods (कोई body नहीं) और normal दोनों मिल सकती हैं। Child इसे extends करती है और abstract methods पूरी करनी होती हैं।
Interface
interface Animal {
void sound(); // सिर्फ़ method नाम (contract)
void eat();
}
Interface शुद्ध contract है — methods की list जो class देने का वादा करती है, अंदर कोई code नहीं (पारंपरिक रूप से)। यह बताता है क्या होना चाहिए, कैसे काम करता है नहीं।
Interface implement करना
class Dog implements Animal {
public void sound() { System.out.println("Woof"); }
public void eat() { System.out.println("Dog eating"); }
}
// इस्तेमाल:
Animal a = new Dog();
a.sound();
Class interface पूरा करने को implements इस्तेमाल करती है, और interface की हर method define करनी होती है। यह पक्का करता है किसी भी Animal के पास sound() और eat() है।
कई interfaces
interface Swimmer { void swim(); }
interface Walker { void walk(); }
class Duck implements Swimmer, Walker {
public void swim() { System.out.println("swimming"); }
public void walk() { System.out.println("walking"); }
}
Class एक साथ कई interfaces implement कर सकती है — जो classes के साथ संभव नहीं। ऐसे Java multiple class inheritance बिना capabilities जोड़ती है।
Abstract class बनाम interface
| बात | Abstract class | Interface |
|---|---|---|
| इस्तेमाल keyword | extends | implements |
| कितने | सिर्फ़ एक | एक साथ कई |
| Fields | हाँ | सिर्फ़ constants |
| Normal methods | हाँ | ज़्यादातर नाम (contract) |
| किसके लिए बढ़िया | साझा code + is-a | एक साझा capability |
आम गलतियाँ
- Abstract class instantiate करना। इस पर
newइस्तेमाल नहीं कर सकते — पहले extend कीजिए। - सारी methods implement करना भूलना। Class को हर interface method define करनी होती है (या abstract हो)।
- extends और implements मिला देना। Classes को
extends, interfaces कोimplements। - दो classes extend करने की कोशिश। इसके बजाय कई interfaces इस्तेमाल कीजिए।
सारांश
- Abstraction details छिपाकर सिर्फ़ ज़रूरी दिखाता है।
- Abstract class normal और abstract methods मिलाती है;
extendsसे extend कीजिए। - Interface methods का contract है;
implementsसे पूरा कीजिए। - Class कई interfaces implement कर सकती है पर सिर्फ़ एक class extend।
- साझा code को abstract classes, साझा capabilities को interfaces इस्तेमाल कीजिए।
आगे, inheritance दोहराइए, या access control कीजिए access modifiers से।
अक्सर पूछे जाने वाले प्रश्न (FAQ)
Java में abstraction क्या है?
Abstract class क्या है?
abstract से चिह्नित class है जो अकेले instantiate नहीं हो सकती। इसमें normal methods (code के साथ) और abstract methods (सिर्फ़ नाम, कोई body नहीं) दोनों हो सकती हैं जिन्हें child classes पूरा करती हैं।Abstract class और interface में क्या अंतर है?
extends से extend होती है (सिर्फ़ एक)। Interface ज़्यादातर method नाम हैं, implements से implement होती है, और class कई interfaces implement कर सकती है।extends और implements में क्या अंतर है?
extends class से inherit करने को (abstract class समेत) इस्तेमाल होता है, और आप सिर्फ़ एक extend कर सकते हैं। implements interface पूरा करने को इस्तेमाल होता है, और class कई interfaces implement कर सकती है।