जावा में इंटरफ़ेस क्या है और इसे कैसे लागू किया जाए?



यह आलेख जावा इंटरफ़ेस और इसकी कार्यक्षमता से संबंधित विभिन्न प्रकार के उदाहरणों के लिए एक व्यापक दृष्टिकोण के साथ आपकी मदद करेगा।

' इंटरफेस जावा प्रोग्रामिंग लैंग्वेज में अमूर्तता प्राप्त करने का एक उन्नत स्तर है। जावा इंटरफ़ेस में मदद करता है जटिलता की कमी कोड में और सरल करता है पठनीयता । इस लेख में, मैं आपको निम्नलिखित गोदी के माध्यम से जावा इंटरफेस समझाऊंगा।

जावा इंटरफेस क्या है?

कंप्यूटर इंटरफ़ेस एक सीमा के रूप में जाना जाता है जो दो या अधिक प्रणालियों को अलग करता है। यह एक सिस्टम में घटकों के बीच डेटा का आदान-प्रदान करता है जो सिग्नल, कमांड या प्रोटोकॉल कर सकता है।





java-interface

जावा एब्स्ट्रेक्शन विधि के अंदर लिखे कार्यान्वयन तर्क को छिपाकर एक विशेष विधि की कार्यक्षमता प्रदान करता है। इसी तरह, Java Interface भी एक Abstract Class है जिसमें Method Declaration शामिल है लेकिन इसकी परिभाषा नहीं। एक कक्षा लागू होता है सार विधियों को इनहेरिट करने के लिए एक इंटरफ़ेस। अमूर्त विधियों के साथ, ए इंटरफेस भी शामिल कर सकते हैं स्थिरांक, स्थिर तरीके, नेस्टेड इंटरफेस तथा डिफ़ॉल्ट तरीके।



एक वर्ग और एक इंटरफेस के बीच समानताएं।

एक इंटरफ़ेस पूरी तरह से जावा में एक सामान्य वर्ग के समान है। एक इंटरफ़ेस में अमूर्त विधियाँ शामिल हैं और इन विधियों को कार्यान्वित करने के लिए डिज़ाइन किया गया है। यह प्रक्रिया केवल विरासत के बराबर है, जो कक्षाओं में आने पर सामान्य है। हम समानता पर अधिक चर्चा करेंगे।

  • एक वर्ग के रूप में ही, एक इंटरफ़ेस में भी आवश्यक संख्या में कई तरीके हो सकते हैं।
  • कक्षाओं के समान, इंटरफ़ेस भी एक के साथ लिखा जाता है ।जावा एक्सटेंशन फ़ाइल।
  • हैरानी की बात है, एक अंतरफलक के लिए bytecode एक में दिखाई दिया होगा ।कक्षा फ़ाइल।
  • एक इंटरफ़ेस पैकेज के रूप में दिखाया गया है और उनका संबंधित बायटेकोड एक निर्देशिका में है जो पैकेज नाम के साथ मेल खाता है।

हमें एक इंटरफ़ेस की आवश्यकता क्यों है?

जावा समर्थन नहीं करता है कई निहितार्थ, जिसके कारण, यह कक्षाओं को उदाहरण के लिए एक से अधिक कक्षाओं का विस्तार करने की अनुमति नहीं देगा। बाल वर्ग के गुणों को विरासत में नहीं मिला कई अभिभावक वर्ग एक ही उदाहरण में, क्योंकि यह परिणाम है हीरा समस्या। इस समस्या को दूर करने के लिए, इंटरफेस शुरू किया है। आइए इस समस्या को एक उदाहरण के माध्यम से समझते हैं।



हमें लगता है कि हमारे पास दो विमान हैं, एक ही ले जा सकता है यात्रियों, केवल एक ही पद। अब, हमें करने की आवश्यकता है विरासत में मिला मालवाहक विमान और यात्री विमान दोनों के गुण। जावा इस समाधान का समर्थन नहीं करेगा क्योंकि यह समाप्त होता है अस्पष्टता दोनों विमानों के बीच।

लेकिन, यदि आप जावा को यह महसूस करवा सकते हैं कि यह एक विमान को विरासत में मिला है क्रियान्वयन दूसरे विमान में मौजूद तरीके। यह एक वाणिज्यिक हवाई जहाज की तरह है जो यात्रियों और कार्गो सामान दोनों को लेता है। इंटरफ़ेस एक बड़ा विमान बनाने जैसा है जो दोनों कार्यों को एक दूसरे के घटकों के साथ हस्तक्षेप किए बिना कर सकता है, इसके बजाय सिर्फ तरीकों को उधार लेना इंटरफ़ेस वर्ग।

// क्लास ए कोड

पैकेज मल्टीपल क्लास A {void संदेश () {System.out.println ('हैलो')}}

// क्लास बी कोड

पैकेज मल्टीपल क्लास B {void संदेश () {System.out.println ('वेलकम')}}

कक्षा सी कोड

पैकेज मल्टीपल क्लास सी का विस्तार ए, बी {// है यह जावा द्वारा स्वीकार नहीं किया जाएगा, यह एक त्रुटि फेंक देगा और कोड निष्पादित नहीं किया जाएगा। सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग args []) {C obj = new C () obj.msg ()}}

आउटपुट:

त्रुटि। यह विशेष दृष्टिकोण एक अपवाद फेंकता है। जावा कई विरासतों का समर्थन नहीं करता है। इस त्रुटि के रूप में जाना जाता है हीरा समस्या 

आइए हम एक इंटरफ़ेस का उपयोग करके समाधान का प्रयास करें, बाल वर्ग से विधियों तक पहुँच सकते हैं बहु जनक एकल उदाहरण में कक्षाएं।

// इंटरफ़ेस कोड

पैकेज MIS सार्वजनिक इंटरफ़ेस समाधान {सार्वजनिक शून्य नमस्कार () सार्वजनिक शून्य स्वागत ()}

//कक्षा का कोड

पैकेज MIS सार्वजनिक वर्ग classA लागू करता है समाधान {public void Hello () {java.lang.System.out.println ('Hello world')} public void Welcome () {java.lang.System.out.println ('आपका स्वागत है Edureka ')} सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] args) {classA edureka = new classA () Edureka.Hello () Edureka.Welcome ()}}

आउटपुट:

नमस्ते दुनिया
Edureka में आपका स्वागत है

एक जावा इंटरफेस की घोषणा: सिंटेक्स

इंटरफ़ेस इंटरफ़ेस_नाम {// लगातार फ़ील्ड घोषित करें // घोषित करने के तरीके () // डिफ़ॉल्ट तरीके}

जावा इंटरफेस पर एक उदाहरण के माध्यम से चलते हैं

जावा इंटरफ़ेस उदाहरण

आइए हम जावा इंटरफ़ेस पर आधारित एक सरल कैलकुलेटर बनाते हैं।

बड़ा डेटा और हैडूप क्या है

// इंटरफ़ेस कोड

पैकेज बुनियादी बातों सार्वजनिक इंटरफ़ेस गणित {सार्वजनिक शून्य जोड़ () सार्वजनिक शून्य उप () सार्वजनिक शून्य mul () सार्वजनिक शून्य div ()}

//कक्षा का कोड

पैकेज बेसिकऑपरेशंस java.util.Scanner पब्लिक क्लास स्टूडेंट 1 इम्प्लीमेंट्स मैथ्स {@Override public void add () {Scanner kb = new Scanner (System.in) System.out.println ('जोड़ दो पूर्णांक मान दर्ज करें') int आयात a = kb.nextInt () int b = kb.nextInt () int s = a + b System.out.println ('Sum of' + a + 'और' + b + 'is' + s) @Override public void sub () {स्कैनर kb = नया स्कैनर (System.in) System.out.println ('घटाव करने के लिए किसी भी दो पूर्णांक मान दर्ज करें') int a = kb.nextInt () int b = kb.nextInt () int s = ab System.out.println ('' + a + 'और' + b + 'का अंतर' + s)} @Override public void mul () {स्कैनर kb = नया स्कैनर (System.in) System.out.println ('दर्ज करें') है। किसी भी दो पूर्णांक मान गुणा ') int a = kb.nextInt () int b = kb.nextInt () int s = a * b System.out.println (' '+ a +' और '+ b +' का उत्पाद '+' है। s)} @Override public void div () {Scanner kb = new Scanner (System.in) System.out.println ('कोई भी दो पूर्णांक मान दर्ज करें') int a = kb.nextInt () int b = kb.nextInt () int s = a / b System.out.p rintln ('Quotient of' + a + 'और' + b + 'is' + s)} public static void main (String [] args) {student1 Edureka1 = new student1 () Edureka1 .add () Edureka1.sub () Edureka1। mul () Edureka1.div ()}}

आउटपुट:

आगे बढ़ते हुए, हम एक जावा इंटरफेस को बनाना सीखेंगे।

जावा इंटरफ़ेस को घोंसला बनाना

इंटरफ़ेस घोंसला बनाना एक दूसरे के अंदर एक इंटरफ़ेस घोषित करने की एक प्रक्रिया है मौजूदा इंटरफ़ेस या अंदर एक इंटरफ़ेस की घोषणा कक्षा। नेस्टेड इंटरफेस को एक के रूप में भी जाना जाता है आंतरिक इंटरफ़ेस।

नेस्टेड इंटरफ़ेस तक पहुँचा नहीं जा सकता सीधे तौर पर । इसलिए, नेम्सस्पेस को उनके संबंधित के साथ समूहित करके हल करने के लिए नेस्टिंग को लागू किया जाता है इंटरफेस तथा कक्षाएं। इस प्रक्रिया द्वारा,हम कॉल कर सकते हैं नेस्टेड इंटरफ़ेस के माध्यम से बाहरी वर्ग या बाहरी इंटरफ़ेस इसके बाद नाम डॉट (?) , तथा इंटरफ़ेस नाम।

आइए हम कुछ उदाहरणों के आधार पर प्रयास करें इंटरफ़ेस घोंसला बनाना। पहले, हमें घोंसला बनाने की कोशिश करें जावा इंटरफ़ेस दूसरे के अंदर जावा इंटरफ़ेस जैसा कि नीचे दिया गया है:

// इंटरफ़ेस कोड

पैकेज नेस्ट सार्वजनिक इंटरफ़ेस आउटरइंटरफेस {शून्य प्रदर्शन () इंटरफ़ेस इनरइंटरफेस {शून्य इनरमैथोड ()}

//कक्षा का कोड

पैकेज नेस्ट क्लास NestedInterfaceDemo लागू करता है OuterInterface.InnerInterface {सार्वजनिक शून्य इनरमैथोड () {int n = 10, t1 = 0, t2 = 1 System.out.print ('प्रथम' + n + 'पद:') के लिए (int i = 1) i & lt = n ++ i) {System.out.print (t1 + '+') int sum = t1 + t2 t1 = t2 t2 = sum} System.out.println ('nPrinting NN InnerInterface विधि से ...! n ')} सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग args []) {OuterInterface.InnerInterface obj = new NestedInterfaceDemo () obj.InnerMethod ()}}

आउटपुट:

पहले १० पद: ० + १ + १ + २ + ३ + ५ + + + १३ + २१ + ३४ + नेस्टेड इनरइंटरफेस विधि से छपाई ...!

अब, हम घोंसला बनाने की कोशिश करते हैं जावा इंटरफ़ेस अंदर एक जावा क्लास।

// इंटरफ़ेस कोड

पैकेज Nest2 सार्वजनिक वर्ग EdurekaClass {इंटरफ़ेस EdurekaInterface {शून्य NestedMethod ()}}

//कक्षा का कोड

पैकेज Nest2 class NestedInterfaceDemo2 औजार EdurekaClass.EdurekaInterface {public void NestedMethod () {स्ट्रिंग इनपुट = 'Edureka ’बाइट [] strAs.yteArray = input.getBytes () byte [] नया बाइट्स [strasByte] .length i ++) परिणाम [i] = strAsByteArray [strAsByteArray.length-i-1] System.out.println (नया स्ट्रिंग (परिणाम))} सार्वजनिक स्थैतिक vag मुख्य (स्ट्रिंग args []) {EdurekaClass.EdurekaInterface obj = new NInter = नया NInter = () obj.NestedMethod ()}}

आउटपुट:

akerudE

हालाँकि एक इंटरफ़ेस एक वर्ग के समान दिखता है, उनके बीच कुछ अंतर हैं, आइए हम उनके अंतरों पर चर्चा करें।

जावा क्लास और जावा इंटरफेस के बीच अंतर

इंटरफेस कक्षा
एकाधिक वंशानुक्रम का समर्थन करता है मल्टीपल इनहेरिटेंस का समर्थन नहीं करता है
डेटा सदस्य नहीं है डेटा सदस्य शामिल हैं
कंस्ट्रक्टर्स नहीं है कंस्ट्रक्टर्स शामिल हैं
अपूर्ण सदस्य (हस्ताक्षर सदस्य) शामिल हैं दोनों पूर्ण (सार) और अपूर्ण सदस्य शामिल हैं
एक्सेस मॉडिफायर नहीं है एक्सेस मॉडिफायर शामिल हैं
इंटरफ़ेस में स्टैटिक सदस्य नहीं हैं कक्षा में स्टैटिक के रूप में इसके सभी सदस्य हैं

जावा इंटरफेस के फायदे और नुकसान

लाभ:

  • जावा इंटरफेस सपोर्ट करता है एकाधिक वंशानुक्रम।
  • जावा इंटरफ़ेस प्रोग्रामर को जटिल प्रोग्रामिंग दृष्टिकोणों को तोड़ने और सरल बनाने में सक्षम बनाता है निर्भरता वस्तुओं के बीच।
  • जावा इंटरफ़ेस बनाता है डेटा सदस्य तथा विधियाँ शिथिल युग्मित होने के लिए एक आवेदन में।

नुकसान:

  • जावा इंटरफेस का उपयोग नीचे लाता है निष्पादन की गति आवेदन का।
  • एप्लिकेशन में जावा इंटरफेस या तो बड़े पैमाने पर बार-बार उपयोग किए जाते हैं या शायद ही कभी उपयोग किए जाते हैं।

जावा इंटरफेस पर मुख्य बिंदु

  • इंटरफ़ेस में घोषित तरीकों में से कोई भी एक शरीर नहीं है जो इसे पूर्ण अमूर्तता प्रदान करता है।
  • एक इंटरफ़ेस का एक ऑब्जेक्ट बनाना संभव नहीं है। इसलिए, एक इंटरफ़ेस का इंस्टेंटेशन संभव नहीं है।
  • एक क्लास कीवर्ड इम्प्लीमेंट्स का उपयोग करके एक इंटरफ़ेस लागू कर सकता है। इसे एक उदाहरण के माध्यम से देखते हैं।

// इंटरफ़ेस कोड

पैकेज extInterface सार्वजनिक इंटरफ़ेस extInterface {सार्वजनिक शून्य मेथड 1 () सार्वजनिक शून्य मेथड 2 ()}

//कक्षा का कोड

पैकेज extInterface आयात java.util.Scanner वर्ग Edureka लागू करता है extInterface {public void method1 () {System.out.println ('method1 का कार्यान्वयन') स्कैनर स्कैनर = नया स्कैनर (System.in) System.out.println ('नंबर दर्ज करें' जावा में वर्गमूल खोजने के लिए: ') डबल वर्ग = स्कैनर.नेक्स्टड डबल () डबल स्क्वायररूट = मैथ.स्कार्ट (स्क्वायर) सिस्टम.आउट.प्रिंटफ (' संख्या का वर्गमूल:% f:% f% n ', वर्ग) SquareRoot)} public void method2 () {System.out.println ('method2 का कार्यान्वयन')} public static void main (String arg []) {extInterface obj = new Edureka () obj.method1 ()}}

आउटपुट:

पद्धति 1 का कार्यान्वयन जावा में वर्गमूल ज्ञात करने के लिए संख्या दर्ज करें: 16 वर्ग संख्या की संख्या: 16.0 है: 4.0
  • एक वर्ग एक उदाहरण पर कई विरासत को लागू कर सकता है। आइए हम इसे निम्नलिखित कोड के माध्यम से समझते हैं।

// इंटरफ़ेस 1 कोड

पैकेज ExtendInt सार्वजनिक इंटरफ़ेस इंटरफ़ेस 1 {सार्वजनिक शून्य आर्मस्ट्रांग ()}

// इंटरफ़ेस 2 कोड

पैकेज ExtendInt सार्वजनिक इंटरफ़ेस इंटरफ़ेस 2 {public शून्य प्राइम ()} // क्लास कोड पैकेज ExtendInt सार्वजनिक वर्ग Edureka2 लागू करता है इंटरफ़ेस 1, इंटरफ़ेस 2 {सार्वजनिक शून्य आर्मस्ट्रांग () {int c = 0, a, अस्थायी int n = 153 // इनपुट अस्थायी = n जबकि (n & gt0) {a = n% 10 n = n / 10 c = c + (a * a * a}} अगर (अस्थायी == c) System.out.println ('आर्मस्ट्रांग नंबर') System.out.println ('आर्मस्ट्रॉन्ग नंबर नहीं') System.out.println ('इंटरफ़ेस 1 में विस्तार')} सार्वजनिक शून्य प्राइम () {int i, m = 0, flag = 0 int n = 3 // input m = n / 2 (n == 0 || n == 1) {System.out.println (n + 'अभाज्य संख्या नहीं है)}} {{(2 = 2i और lt = mi ++) {if (n% i == 0) / प्रणाली .out.println (n + 'अभाज्य संख्या नहीं है') झंडा = 1 विराम}} अगर (ध्वज == 0) {System.out.println (n + 'अभाज्य संख्या है)}}} System.out.println (' विस्तार ' इंटरफ़ेस 2 ')}} सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग args []) {Interface2 obj = new Edureka2 () obj.prime () इंटरफ़ेस 1 obj1 = नया Edureka2 () obj1 .armstrong ()}}}

आउटपुट:

3 प्राइम नंबर है इंटरफ़ेस 2 तक विस्तार करना आर्मस्ट्रांग नंबर इंटरफ़ेस 1 तक पहुंचना
  • जावा इंटरफेस को घोषणा के समय घोषित किए गए चर की आवश्यकता होती है।
  • एक इंटरफ़ेस के लिए एक्सेस संशोधक सार्वजनिक रूप से स्थिर और अंतिम रूप से डिफ़ॉल्ट रूप से सेट होते हैं। इसे एक उदाहरण से समझते हैं

// इंटरफ़ेस कोड

पैकेज परीक्षण सार्वजनिक इंटरफ़ेस {// सार्वजनिक int a = 10 // सार्वजनिक स्थैतिक अंतिम int a = 10 // स्थिर int a = 0 // अंतिम int a = 10 // int = a 10}
  • उपरोक्त सभी घोषणाएँ एक इंटरफ़ेस के अंदर सही और मान्य हैं।
  • जावा इंटरफ़ेस किसी भी संख्या में इंटरफेस का विस्तार करने में सक्षम है, लेकिन कभी भी इसे लागू नहीं कर सकता है।
  • एक जावा वर्ग किसी भी संख्या में इंटरफेस को लागू कर सकता है।
  • जावा क्लास एक ही विधि के नाम और विभिन्न रिटर्न प्रकार के साथ इंटरफेस को लागू नहीं कर सकती है।
  • यदि एक ही विधि नाम के साथ दो या अधिक विधियां हैं, तो कई इंटरफेस में मौजूद हैं, तो एक बार के लिए विधि को लागू करना पर्याप्त है। इसे एक व्यावहारिक उदाहरण से समझते हैं।

// इंटरफ़ेस कोड

पैकेज समान सार्वजनिक इंटरफ़ेस A {सार्वजनिक शून्य प्रदर्शन ()} // इंटरफ़ेस कोड पैकेज समान सार्वजनिक इंटरफ़ेस B {सार्वजनिक शून्य प्रदर्शन ()} // क्लास कोड पैकेज समान श्रेणी समान समान ए, बी {सार्वजनिक शून्य प्रदर्शन () {System.out .println ('डेटा प्रदर्शित करना')} सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] आर्ग्स) {एक ही प्रिंट = नया समान () प्रिंट .isplay ()}}

आउटपुट:

Edureka E-Learning में आपका स्वागत है

इसके साथ, हम इस लेख के अंत में आते हैं। मुझे आशा है कि आप इंटरफ़ेस, सिंटैक्स, कार्यक्षमता, इंटरफ़ेस नेस्टिंग, जावा इंटरफेस के प्रमुख बिंदुओं और उनके उपयोग से किए गए संचालन के महत्व को समझ गए होंगे।

अब जब आप जावा की मूल बातें समझ गए हैं, तो देखें 250,000 से अधिक संतुष्ट शिक्षार्थियों के एक नेटवर्क के साथ एक विश्वसनीय ऑनलाइन शिक्षण कंपनी, एडुरेका द्वारा, दुनिया भर में फैली हुई है। एडुर्का के जावा जे 2 ईई और एसओए प्रशिक्षण और प्रमाणन पाठ्यक्रम उन छात्रों और पेशेवरों के लिए डिज़ाइन किया गया है जो जावा डेवलपर बनना चाहते हैं। पाठ्यक्रम आपको जावा प्रोग्रामिंग में एक शुरुआत देने के लिए डिज़ाइन किया गया है और आपको हाइबरनेट और जैसे विभिन्न जावा फ्रेमवर्क के साथ कोर और उन्नत जावा अवधारणाओं दोनों के लिए प्रशिक्षित करता है। वसंत

क्या आप हमसे कोई प्रश्न पूछना चाहते हैं? इस 'जावा इंटरफ़ेस' ब्लॉग के टिप्पणी अनुभाग में उल्लेख करें और हम आपको जल्द से जल्द वापस मिलेंगे।