जावा इंटरफ़ेस सम्बंधित जानकारी (Java Interface in Hindi)

हम इस ट्यूटोरियल में सीखने वाले है कि जावा इंटरफ़ेस (Java Interface in Hindi) और हम इसे कैसे इस्तमाल कर सकते हैं? एक इंटरफ़ेस जावा में एक संदर्भ प्रकार है। यह class के समान है। यह abstract विधियों का संग्रह है। एक class एक इंटरफ़ेस को लागू करता है, जिससे इंटरफ़ेस के abstract methods विरासत में मिलते हैं।

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

इंटरफ़ेस लिखना क्लास लिखने के समान है। लेकिन एक class किसी वस्तु की विशेषताओं और व्यवहारों का वर्णन करता है। और एक इंटरफ़ेस में ऐसे व्यवहार होते हैं जो एक class लागू करता है।

जब तक कि इंटरफ़ेस को लागू करने वाला class abstract नहीं है, इंटरफ़ेस के सभी तरीकों को कक्षा में परिभाषित करने की आवश्यकता है।

एक इंटरफ़ेस निम्नलिखित तरीकों से एक class के समान है –

  • एक इंटरफ़ेस में कई methods हो सकते हैं।
  • फ़ाइल के नाम से मेल खाने वाले इंटरफ़ेस के नाम के साथ, एक .java एक्सटेंशन वाली फ़ाइल में एक इंटरफ़ेस लिखा जाता है।
  • इंटरफ़ेस का बाइट कोड एक .class फ़ाइल में दिखाई देता है।
  • इंटरफेस पैकेज में दिखाई देते हैं, और उनकी संबंधित बायटेकोड फ़ाइल एक निर्देशिका संरचना में होनी चाहिए जो पैकेज के नाम से मेल खाती हो।

हालाँकि, एक इंटरफ़ेस एक class से कई मायनों में अलग है, जिसमें भी शामिल है

  • आप एक इंटरफ़ेस का दृष्टांत नहीं कर सकते।
  • एक इंटरफ़ेस में कोई कंस्ट्रक्टर नहीं होता है।
  • एक इंटरफ़ेस में सभी विधियाँ abstract हैं।
  • एक इंटरफ़ेस में उदाहरण फ़ील्ड नहीं हो सकते। इंटरफ़ेस में प्रदर्शित होने वाले एकमात्र फ़ील्ड को स्थिर और अंतिम दोनों घोषित किया जाना चाहिए।
  • एक इंटरफ़ेस को एक class द्वारा विस्तारित नहीं किया जाता है; यह एक class द्वारा कार्यान्वित किया जाता है।
  • एक इंटरफेस कई इंटरफेस का विस्तार कर सकता है।

इंटरफेस की घोषणा (Declaring Interfaces)

इंटरफ़ेस कीवर्ड का उपयोग इंटरफ़ेस घोषित करने के लिए किया जाता है। इंटरफ़ेस घोषित करने के लिए यहां एक सरल उदाहरण दिया गया है –

उदाहरण

निम्नलिखित एक इंटरफ़ेस का एक उदाहरण है –

/* File name : NameOfInterface.java */

import java.lang.*;

// import statements की कोई भी संख्या

public interface NameOfInterface {

   // final, static fields की कोई भी संख्या

   // Any number of abstract method declarations\

}

इंटरफेस में निम्नलिखित गुण होते हैं –

  • एक इंटरफ़ेस निहित रूप से abstract है। इंटरफ़ेस घोषित करते समय आपको abstract कीवर्ड का उपयोग करने की आवश्यकता नहीं है।
  • एक इंटरफ़ेस में प्रत्येक विधि भी निहित रूप से abstract है, इसलिए abstract कीवर्ड की आवश्यकता नहीं है।
  • इंटरफ़ेस में methods पूरी तरह से abstract जनिक हैं।

Example

/* फ़ाइल का नाम : Animal.java */

interface Animal {

   public void eat();

   public void travel();

}

इंटरफेस लागू करना (Implementing Interfaces)

जब कोई class किसी इंटरफ़ेस को लागू करता है, तो आप इंटरफ़ेस के विशिष्ट व्यवहारों को करने के लिए सहमत होते हुए, एक अनुबंध पर हस्ताक्षर करने वाले class के बारे में सोच सकते हैं। यदि कोई class इंटरफ़ेस के सभी व्यवहारों को निष्पादित नहीं करता है, तो कक्षा को स्वयं को abstract के रूप में घोषित करना होगा।

इंटरफ़ेस लागू करने के लिए एक class कार्यान्वयन कीवर्ड का उपयोग करता है। कार्यान्वयन कीवर्ड घोषणा के विस्तारित हिस्से के बाद कक्षा घोषणा में प्रकट होता है।

Example

/* फ़ाइल का नाम : MammalInt.java */

public class MammalInt implements Animal {

   public void eat() {

      System.out.println(“Mammal eats”);

   }

   public void travel() {

      System.out.println(“Mammal travels”);

   } 

   public int noOfLegs() {

      return 0;

   }

   public static void main(String args[]) {

      MammalInt m = new MammalInt();

      m.eat();

      m.travel();

   }

यह निम्नलिखित परिणाम देगा –

Output

Mammal eats

Mammal travels

इंटरफ़ेस में परिभाषित तरीकों को ओवरराइड करते समय, पालन किए जाने वाले कई नियम हैं –

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

कार्यान्वयन इंटरफेस करते समय, कई नियम हैं –

  • एक class एक समय में एक से अधिक इंटरफ़ेस लागू कर सकता है।
  • एक class केवल एक class का विस्तार कर सकता है, लेकिन कई इंटरफेस लागू करता है।
  • एक इंटरफ़ेस दूसरे इंटरफ़ेस का विस्तार कर सकता है, उसी तरह जैसे एक class दूसरे class का विस्तार कर सकता है।

विस्तार इंटरफेस (Extending Interfaces in Hindi)

एक इंटरफ़ेस दूसरे इंटरफ़ेस का उसी तरह विस्तार कर सकता है जैसे एक class दूसरी कक्षा का विस्तार कर सकता है। एक्सटेंडेड कीवर्ड का उपयोग इंटरफ़ेस का विस्तार करने के लिए किया जाता है, और चाइल्ड इंटरफ़ेस पैरेंट इंटरफ़ेस के तरीकों को इनहेरिट करता है।

निम्नलिखित खेल इंटरफ़ेस हॉकी और फ़ुटबॉल इंटरफ़ेस द्वारा विस्तारित किया गया है।

Example

// फ़ाइल का नाम: Sports.java

public interface Sports {

   public void setHomeTeam(String name);

   public void setVisitingTeam(String name);

}

// फ़ाइल का नाम: Football.java

public interface Football extends Sports {

   public void homeTeamScored(int points);

   public void visitingTeamScored(int points);

   public void endOfQuarter(int quarter);

}

//फ़ाइल का नाम: Hockey.java

public interface Hockey extends Sports {

   public void homeGoalScored();

   public void visitingGoalScored();

   public void endOfPeriod(int period);

   public void overtimePeriod(int ot);

}

हॉकी इंटरफ़ेस में चार विधियाँ हैं, लेकिन यह खेल से दो प्राप्त करती है; इस प्रकार, हॉकी को लागू करने वाले class को सभी छह विधियों को लागू करने की आवश्यकता है। इसी तरह, फुटबॉल को लागू करने वाले class को फुटबॉल से तीन तरीकों और खेल से दो तरीकों को परिभाषित करने की जरूरत है।

एकाधिक इंटरफेस का विस्तार (Extending Multiple Interfaces)

एक जावा class केवल एक मूल class का विस्तार कर सकता है। एकाधिक वंशानुक्रम की अनुमति नहीं है। इंटरफेस कक्षाएं नहीं हैं, हालांकि, और एक इंटरफेस एक से अधिक पैरेंट इंटरफेस का विस्तार कर सकता है।

विस्तृत कीवर्ड का उपयोग एक बार किया जाता है, और माता-पिता इंटरफेस को अल्पविराम से अलग सूची में घोषित किया जाता है।

उदाहरण के लिए, यदि हॉकी इंटरफ़ेस ने स्पोर्ट्स और इवेंट दोनों का विस्तार किया है, तो इसे – के रूप में घोषित किया जाएगा

Example

public interface Hockey extends Sports, Event

टैगिंग इंटरफेस (Tagging Interfaces in Hindi)

इंटरफ़ेस का विस्तार करने का सबसे आम उपयोग तब होता है जब मूल इंटरफ़ेस में कोई विधियाँ नहीं होती हैं। उदाहरण के लिए, java.awt.event पैकेज में माउस लिस्टनर इंटरफ़ेस ने java.util.EventListener को विस्तारित किया, जिसे इस प्रकार परिभाषित किया गया है –

Example

package java.util;

public interface EventListener

{}

जिस इंटरफ़ेस में कोई विधि नहीं है उसे टैगिंग इंटरफ़ेस कहा जाता है। टैगिंग इंटरफेस के दो मूल डिजाइन उद्देश्य हैं –

Creates a common parent − जैसा कि इवेंट लिस्टनर इंटरफ़ेस के साथ होता है, जिसे जावा एपीआई में दर्जनों अन्य इंटरफेस द्वारा विस्तारित किया जाता है, आप इंटरफेस के समूह के बीच एक सामान्य पैरेंट बनाने के लिए एक टैगिंग इंटरफ़ेस का उपयोग कर सकते हैं। उदाहरण के लिए, जब कोई इंटरफ़ेस EventListener का विस्तार करता है, तो JVM जानता है कि इस विशेष इंटरफ़ेस का उपयोग इवेंट डेलिगेशन परिदृश्य में किया जाएगा।

Adds a data type to a class − यह स्थिति वह जगह है जहां शब्द टैगिंग आता है। टैगिंग इंटरफ़ेस को लागू करने वाले class को किसी भी methods को परिभाषित करने की आवश्यकता नहीं है (चूंकि इंटरफ़ेस में कोई नहीं है), लेकिन class बहुरूपता के माध्यम से एक इंटरफ़ेस प्रकार बन जाता है।

हम उम्मीद करते है कि आपको “जावा इंटरफ़ेस (Java Interface in Hindi)” से सम्बंधित जानकारी हिंदी में समझ में आयी होंगी यदि आपको बताई गई जानकारी अच्छी लगी हो तो अपने दोस्तों में ऐसे शेयर करे जिससे उनकी भी हेल्प हो सके धन्यवाद!

RELATED ARTICLES

कोई जवाब दें

कृपया अपनी टिप्पणी दर्ज करें!
कृपया अपना नाम यहाँ दर्ज करें

Subject Topics

Latest Topic

lang="hi-IN"