जावा में इंटरफ़ेस क्या है?
जावा प्रोग्रामिंग में एक इंटरफ़ेस एक अमूर्त प्रकार के रूप में परिभाषित किया गया है जिसका उपयोग कक्षा के व्यवहार को निर्दिष्ट करने के लिए किया जाता है। एक जावा इंटरफ़ेस में स्थिर स्थिरांक और सार विधियां शामिल हैं। एक वर्ग कई इंटरफेस को लागू कर सकता है। जावा में, इंटरफ़ेस कीवर्ड का उपयोग करके इंटरफेस की घोषणा की जाती है। इंटरफ़ेस में सभी विधियाँ स्पष्ट रूप से सार्वजनिक और सार हैं।
इंटरफ़ेस की घोषणा के लिए सिंटैक्स
interface {//methods}
अपनी कक्षा में एक इंटरफ़ेस का उपयोग करने के लिए, इंटरफ़ेस के नाम के बाद आपके क्लास के नाम के बाद कीवर्ड को लागू करें।
कार्यान्वयन इंटरफ़ेस के लिए उदाहरण
class Dog implements Pet
interface RidableAnimal extends Animal, Vehicle
यदि वीडियो उपलब्ध नहीं है तो यहां क्लिक करें
एक इंटरफ़ेस की आवश्यकता क्यों है?
जावा इंटरफेस की अवधारणा को बेहतर ढंग से समझने के लिए, एक उदाहरण देखते हैं। वर्ग "मीडिया प्लेयर" में दो उपवर्ग होते हैं: सीडी प्लेयर और डीवीडी प्लेयर। प्रत्येक में संगीत को चलाने के लिए इसकी अनूठी कार्यान्वयन विधि है।
एक अन्य वर्ग "कॉम्बो ड्राइव" सीडी और डीवीडी दोनों को विरासत में मिला है (नीचे चित्र देखें)। इसे किस खेल पद्धति को विरासत में लेना चाहिए? यह गंभीर डिज़ाइन समस्याओं का कारण हो सकता है। और इसलिए, जावा कई उत्तराधिकार की अनुमति नहीं देता है।
अब आइए डॉग का एक और उदाहरण लेते हैं।
मान लें कि आपके पास एक आवश्यकता है जहां कक्षा "कुत्ता" विरासत में मिला "जानवर" और "पालतू" (नीचे दी गई छवि देखें)। लेकिन आप जावा में दो वर्गों का विस्तार नहीं कर सकते। तो आप क्या करेंगे? समाधान इंटरफ़ेस है।
इंटरफ़ेस के लिए नियम पुस्तिका कहती है,
- एक इंटरफ़ेस 100% अमूर्त वर्ग है और इसमें केवल सार विधियाँ हैं।
- वर्ग किसी भी संख्या में इंटरफेस को लागू कर सकता है।
क्लास डॉग "एनिमल" को क्लास तक बढ़ा सकता है और इंटरफ़ेस को "पेट" के रूप में लागू कर सकता है।
जावा इंटरफ़ेस उदाहरण:
चरण 1) निम्नलिखित कोड को एक संपादक में कॉपी करें।
इंटरफ़ेस पालतू {सार्वजनिक शून्य परीक्षण ();}कुत्ता वर्ग पालतू पालतू {सार्वजनिक शून्य परीक्षण () {System.out.println ("इंटरफ़ेस विधि कार्यान्वित");}सार्वजनिक स्थैतिक शून्य main (String [] args[]){पालतू पी = नया कुत्ता ();p.test ();}}
चरण 2) कोड को सहेजें, संकलित करें और चलाएँ। आउटपुट का निरीक्षण करें।
वर्ग और इंटरफ़ेस के बीच अंतर
कक्षा | इंटरफेस |
---|---|
कक्षा में, आप चर को तुरंत लिख सकते हैं और एक वस्तु बना सकते हैं। | एक इंटरफ़ेस में, आप वेरिएबल को इंस्टेंट नहीं कर सकते हैं और एक ऑब्जेक्ट नहीं बना सकते हैं। |
कक्षा में कंक्रीट (कार्यान्वयन के साथ) विधियां हो सकती हैं | इंटरफ़ेस में ठोस (कार्यान्वयन के साथ) तरीके नहीं हो सकते |
कक्षाओं के साथ उपयोग किए जाने वाले एक्सेस स्पेसिफायर निजी, संरक्षित और सार्वजनिक हैं। |
इंटरफ़ेस में केवल एक विनिर्देशक का उपयोग किया जाता है- सार्वजनिक। |
इंटरफ़ेस और अमूर्त वर्ग का उपयोग कब करें?
- जब उप-वर्ग के समूह के लिए टेम्पलेट को परिभाषित करने की आवश्यकता होती है, तो एक सार वर्ग का उपयोग करें
- जब इन वर्गों के वंशानुक्रम वृक्ष की परवाह किए बिना अन्य वर्गों के लिए एक भूमिका को परिभाषित करने की आवश्यकता होती है, तो एक इंटरफ़ेस का उपयोग करें
इंटरफ़ेस के बारे में तथ्यों को जानना चाहिए
- एक जावा वर्ग कई जावा इंटरफेस को लागू कर सकता है। यह आवश्यक है कि वर्ग को इंटरफेस में घोषित सभी तरीकों को लागू करना होगा।
- क्लास को इंटरफ़ेस में घोषित सभी अमूर्त तरीकों को ओवरराइड करना चाहिए
- इंटरफ़ेस एक वस्तु को एक संदेश भेजने की अनुमति देता है, जिसके बिना वह किस वर्ग से संबंधित है।
- क्लास को इंटरफ़ेस में घोषित तरीकों के लिए कार्यक्षमता प्रदान करने की आवश्यकता है।
- एक इंटरफेस में सभी तरीके स्पष्ट रूप से सार्वजनिक और सार हैं
- एक इंटरफ़ेस तुरंत नहीं किया जा सकता है
- एक इंटरफ़ेस संदर्भ इसके कार्यान्वयन कक्षाओं की वस्तुओं को इंगित कर सकता है
- एक इंटरफ़ेस एक या कई इंटरफेस से विस्तारित हो सकता है। वर्ग केवल एक वर्ग का विस्तार कर सकता है लेकिन किसी भी संख्या में इंटरफेस को लागू कर सकता है
- एक इंटरफ़ेस दूसरे इंटरफ़ेस को लागू नहीं कर सकता है। जरूरत पड़ने पर इसे दूसरे इंटरफेस का विस्तार करना होगा।
- एक इंटरफ़ेस जिसे किसी अन्य इंटरफ़ेस के अंदर घोषित किया जाता है उसे नेस्टेड इंटरफ़ेस कहा जाता है
- घोषणा के समय, इंटरफ़ेस चर को आरंभीकृत किया जाना चाहिए। अन्यथा, संकलक एक त्रुटि फेंक देगा।
- वर्ग जावा में दो इंटरफेस को लागू नहीं कर सकता है जिसमें समान नाम लेकिन अलग-अलग रिटर्न प्रकार हैं।
सारांश :
- इंटरफ़ेस को लागू करने वाले वर्ग को इंटरफ़ेस में घोषित तरीकों के लिए कार्यक्षमता प्रदान करने की आवश्यकता होती है
- एक इंटरफेस में सभी तरीके स्पष्ट रूप से सार्वजनिक और सार हैं
- एक इंटरफ़ेस तुरंत नहीं किया जा सकता है
- एक इंटरफ़ेस संदर्भ इसके कार्यान्वयन कक्षाओं की वस्तुओं को इंगित कर सकता है
- एक इंटरफ़ेस एक या कई इंटरफेस से विस्तारित हो सकता है। एक वर्ग केवल एक वर्ग का विस्तार कर सकता है लेकिन किसी भी संख्या में इंटरफेस को लागू कर सकता है