Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

Java में Interface और Class में अंतर

Class

एक क्लास एक ब्लूप्रिंट है जिससे व्यक्तिगत ऑब्जेक्ट्स बनाए जाते हैं। एक क्लास में निम्नलिखित वेरिएबल प्रकारों में से कोई भी हो सकता है।

  • लोकल वेरिएबल्स − मेथड्स, कंस्ट्रक्टर्स या ब्लॉक्स के अंदर परिभाषित वेरिएबल्स को लोकल वेरिएबल्स कहा जाता है। वेरिएबल को मेथड के भीतर घोषित और इनिशियलाइज़ किया जाएगा और मेथड पूरा होने पर वेरिएबल नष्ट हो जाएगा।

  • इंस्टेंस वेरिएबल्स − इंस्टेंस वेरिएबल्स क्लास के भीतर लेकिन किसी मेथड के बाहर वेरिएबल्स होते हैं। ये वेरिएबल्स तब इनिशियलाइज़ होते हैं जब क्लास इंस्टेंशिएट होती है। इंस्टेंस वेरिएबल्स को उस विशेष क्लास के किसी भी मेथड, कंस्ट्रक्टर या ब्लॉक्स के अंदर से एक्सेस किया जा सकता है।

  • क्लास वेरिएबल्स − क्लास वेरिएबल्स क्लास के भीतर, किसी मेथड के बाहर, static कीवर्ड के साथ घोषित वेरिएबल्स होते हैं।

Interfaces

एक इंटरफ़ेस Java में एक रेफरेंस टाइप है। यह क्लास के समान है। यह एब्स्ट्रैक्ट मेथड्स का एक संग्रह है। एक क्लास एक इंटरफ़ेस को इम्प्लीमेंट करती है, जिससे इंटरफ़ेस के एब्स्ट्रैक्ट मेथड्स इनहेरिट होते हैं।

एब्स्ट्रैक्ट मेथड्स के साथ, एक इंटरफ़ेस में कॉन्स्टेंट्स, डिफ़ॉल्ट मेथड्स, स्टैटिक मेथड्स और नेस्टेड टाइप्स भी हो सकते हैं। मेथड बॉडीज़ केवल डिफ़ॉल्ट मेथड्स और स्टैटिक मेथड्स के लिए मौजूद होती हैं।

एक इंटरफ़ेस लिखना क्लास लिखने के समान है। लेकिन एक क्लास एक ऑब्जेक्ट के गुणों और व्यवहारों का वर्णन करती है। और एक इंटरफ़ेस में वे व्यवहार होते हैं जिन्हें एक क्लास इम्प्लीमेंट करती है।

क्लास और एक इंटरफ़ेस के बीच महत्वपूर्ण अंतर निम्नलिखित हैं:

क्र. सं.मुख्य बिंदुClassInterface
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
  1. Java में इवेंट लिस्टनर इंटरफ़ेस और इवेंट एडाप्टर क्लास के बीच क्या अंतर हैं? Java में इवेंट लिस्टनर इंटरफ़ेस और इवेंट एडाप्टर क्लास के बीच क्या अंतर हैं?

    एक EventListener इंटरफ़ेस उन तरीकों को परिभाषित करता है जिन्हें किसी विशेष प्रकार के इवेंट के लिए इवेंट हैंडलर द्वारा लागू किया जाना चाहिए जबकि एक Event Adapter क्लास एक EventListener इंटरफ़ेस का डिफ़ॉल्ट कार्यान्वयन प्रदान करता है। इवेंट लिस्टनर इवेंट लिस्टनर हर घटक की रीढ़ हैं जो इवेंट को संभालत

  1. - Java में Exception क्लास और Error क्लास में क्या अंतर है?

    Exception क्लास और Error क्लास दोनों java.lang.Throwable क्लास के सबक्लास हैं। हम रनटाइम पर अपवादों को हैंडल कर सकते हैं लेकिन एरर्स को हैंडल नहीं कर सकते। Exceptions (अपवाद): ये रनटाइम पर होने वाली तार्किक त्रुटियों (logical errors) को दर्शाने वाले ऑब्जेक्ट्स हैं जो JVM को अस्पष्टता (ambiguity)

  1. - Java में इंटरफेस (Interface)

    एक इंटरफेस Java में एक रेफरेंस टाइप है। यह एक क्लास के समान है। यह एब्स्ट्रैक्ट मेथड्स का एक संग्रह है। एक क्लास इंटरफेस को इम्प्लीमेंट करती है, जिससे इंटरफेस के एब्स्ट्रैक्ट मेथड्स विरासत में मिलते हैं। एब्स्ट्रैक्ट मेथड्स के साथ, एक इंटरफेस में कॉन्स्टेंट्स, डिफ़ॉल्ट मेथड्स, स्टेटिक मेथड्स, और न