Java में, एब्स्ट्रैक्शन Abstract क्लासेज और इंटरफेस का उपयोग करके प्राप्त किया जाता है। एक Abstract क्लास में एब्स्ट्रैक्ट मेथड्स होते हैं जिन्हें चाइल्ड क्लास इम्प्लीमेंट करती है। Abstract क्लास और एक Concrete क्लास के बीच महत्वपूर्ण अंतर निम्नलिखित हैं।
| क्र. सं. | मुख्य बिंदु | Abstract Class | Concrete Class |
|---|---|---|---|
| 1 | समर्थित मेथड्स | Abstract क्लास में एब्स्ट्रैक्ट और कंक्रीट दोनों मेथड्स हो सकते हैं। | एक Concrete क्लास में केवल कंक्रीट मेथड्स हो सकते हैं। यहां तक कि एक भी एब्स्ट्रैक्ट मेथड क्लास को Abstract बना देता है। |
| 2 | इंस्टेंशिएशन | Abstract क्लास को new कीवर्ड का उपयोग करके इंस्टेंशिएट नहीं किया जा सकता। | Concrete क्लास को new कीवर्ड का उपयोग करके इंस्टेंशिएट किया जा सकता है। |
| 3 | एब्स्ट्रैक्ट मेथड | Abstract क्लास में एब्स्ट्रैक्ट मेथड्स हो भी सकते हैं और नहीं भी। | Concrete क्लास में एब्स्ट्रैक्ट मेथड नहीं हो सकता। |
| 4 | Final | Abstract क्लास को final क्लास के रूप में घोषित नहीं किया जा सकता। | Concrete क्लास को final घोषित किया जा सकता है। |
| 5 | कीवर्ड | Abstract क्लास को abstract कीवर्ड का उपयोग करके घोषित किया जाता है। | Concrete क्लास की घोषणा के दौरान abstract कीवर्ड नहीं होता। |
| 6 | इनहेरिटेंस | Abstract क्लास extends कीवर्ड का उपयोग करके दूसरी क्लास को इनहेरिट कर सकती है और एक इंटरफ़ेस को इम्प्लीमेंट कर सकती है। | इंटरफ़ेस केवल एक इंटरफ़ेस को इनहेरिट कर सकता है। |
| 7 | इंटरफ़ेस | Abstract क्लास अकेले इंटरफ़ेस को इम्प्लीमेंट नहीं कर सकती। इंस्टेंशिएशन के लिए इंटरफ़ेस का उपयोग करने के लिए एक चाइल्ड क्लास की आवश्यकता होती है। | इंटरफ़ेस को आसानी से इम्प्लीमेंट किया जा सकता है। |
Abstract Class बनाम Concrete Class का उदाहरण
JavaTester.java
public class JavaTester {
public static void main(String args[]) {
Cat lion = new Lion();
lion.eat();
}
}
abstract class Cat {
abstract public void eat();
}
class Lion extends Cat{
public void eat(){
System.out.println("Lion eats");
}
}आउटपुट
Lion eats