Class
एक क्लास एक ब्लूप्रिंट है जिससे व्यक्तिगत ऑब्जेक्ट्स बनाए जाते हैं। एक क्लास में निम्नलिखित वेरिएबल प्रकारों में से कोई भी हो सकता है।
लोकल वेरिएबल्स − मेथड्स, कंस्ट्रक्टर्स या ब्लॉक्स के अंदर परिभाषित वेरिएबल्स को लोकल वेरिएबल्स कहा जाता है। वेरिएबल को मेथड के भीतर घोषित और इनिशियलाइज़ किया जाएगा और मेथड पूरा होने पर वेरिएबल नष्ट हो जाएगा।
इंस्टेंस वेरिएबल्स − इंस्टेंस वेरिएबल्स क्लास के भीतर लेकिन किसी मेथड के बाहर वेरिएबल्स होते हैं। ये वेरिएबल्स तब इनिशियलाइज़ होते हैं जब क्लास इंस्टेंशिएट होती है। इंस्टेंस वेरिएबल्स को उस विशेष क्लास के किसी भी मेथड, कंस्ट्रक्टर या ब्लॉक्स के अंदर से एक्सेस किया जा सकता है।
क्लास वेरिएबल्स − क्लास वेरिएबल्स क्लास के भीतर, किसी मेथड के बाहर, static कीवर्ड के साथ घोषित वेरिएबल्स होते हैं।
Interfaces
एक इंटरफ़ेस Java में एक रेफरेंस टाइप है। यह क्लास के समान है। यह एब्स्ट्रैक्ट मेथड्स का एक संग्रह है। एक क्लास एक इंटरफ़ेस को इम्प्लीमेंट करती है, जिससे इंटरफ़ेस के एब्स्ट्रैक्ट मेथड्स इनहेरिट होते हैं।
एब्स्ट्रैक्ट मेथड्स के साथ, एक इंटरफ़ेस में कॉन्स्टेंट्स, डिफ़ॉल्ट मेथड्स, स्टैटिक मेथड्स और नेस्टेड टाइप्स भी हो सकते हैं। मेथड बॉडीज़ केवल डिफ़ॉल्ट मेथड्स और स्टैटिक मेथड्स के लिए मौजूद होती हैं।
एक इंटरफ़ेस लिखना क्लास लिखने के समान है। लेकिन एक क्लास एक ऑब्जेक्ट के गुणों और व्यवहारों का वर्णन करती है। और एक इंटरफ़ेस में वे व्यवहार होते हैं जिन्हें एक क्लास इम्प्लीमेंट करती है।
क्लास और एक इंटरफ़ेस के बीच महत्वपूर्ण अंतर निम्नलिखित हैं:
| क्र. सं. | मुख्य बिंदु | Class | Interface |
|---|---|---|---|
| 1 | समर्थित मेथड्स | एक क्लास में एब्स्ट्रैक्ट और कंक्रीट दोनों मेथड्स हो सकते हैं। | इंटरफ़ेस में केवल एब्स्ट्रैक्ट मेथड्स हो सकते हैं। Java 8 से, इसमें डिफ़ॉल्ट और स्टैटिक मेथड्स भी हो सकते हैं। |
| 2 | मल्टीपल इनहेरिटेंस | मल्टीपल इनहेरिटेंस समर्थित नहीं है। | इंटरफ़ेस मल्टीपल इनहेरिटेंस का समर्थन करता है। |
| 3 | समर्थित वेरिएबल्स | final, non-final, static और non-static वेरिएबल्स समर्थित। | केवल static और final वेरिएबल्स अनुमत हैं। |
| 4 | कार्यान्वयन | एक क्लास एक इंटरफ़ेस को इम्प्लीमेंट कर सकती है। | इंटरफ़ेस एक इंटरफ़ेस को इम्प्लीमेंट नहीं कर सकता, यह एक इंटरफ़ेस को एक्सटेंड कर सकता है। |
| 5 | कीवर्ड | एक क्लास को class कीवर्ड का उपयोग करके घोषित किया जाता है। | इंटरफ़ेस को interface कीवर्ड का उपयोग करके घोषित किया जाता है। |
| 6 | इनहेरिटेंस | एक क्लास extends कीवर्ड का उपयोग करके दूसरी क्लास को इनहेरिट कर सकती है और एक इंटरफ़ेस को इम्प्लीमेंट कर सकती है। | इंटरफ़ेस केवल एक इंटरफ़ेस को इनहेरिट कर सकता है। |
| 7 | इनहेरिटेंस | एक क्लास को extends कीवर्ड का उपयोग करके इनहेरिट किया जा सकता है। | इंटरफ़ेस को केवल implements कीवर्ड का उपयोग करके इम्प्लीमेंट किया जा सकता है। |
| 8 | एक्सेस | एक क्लास में किसी भी प्रकार के मेंबर्स हो सकते हैं जैसे private, public। | इंटरफ़ेस में केवल public मेंबर्स हो सकते हैं। |
| 9 | कंस्ट्रक्टर | एक क्लास में कंस्ट्रक्टर मेथड्स हो सकते हैं। | इंटरफ़ेस में कंस्ट्रक्टर नहीं हो सकता। |
Class बनाम Interface का उदाहरण
JavaTester.java
public class JavaTester {
public static void main(String args[]) {
Animal tiger = new Tiger();
tiger.eat();
Tiger tiger1 = new Tiger();
tiger1.eat();
}
}
interface Animal {
public void eat();
}
class Tiger implements Animal {
public void eat(){
System.out.println("Tiger eats");
}
}आउटपुट
Tiger eats Tiger eats