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

जावा में इंटरफेस में स्टेटिक मेथड

उदाहरण

interface MyInterface { 
    static void staticFun() { 
        System.out.println("नवनिर्मित स्टेटिक मेथड में"); 
    } 
    
    void methodOverride(String str); 
} 

public class DemoInterface implements MyInterface { 
    public static void main(String[] args) { 
        DemoInterface demoInter = new DemoInterface(); 
        MyInterface.staticFun(); 
        demoInter.methodOverride("ओवरराइड मेथड में"); 
    } 
    
    @Override 
    public void methodOverride(String str) { 
        System.out.println(str); 
    } 
}

आउटपुट

नवनिर्मित स्टेटिक मेथड में 
ओवरराइड मेथड में

व्याख्या: एक इंटरफेस परिभाषित किया जाता है, जिसके अंदर एक स्टेटिक फंक्शन परिभाषित होता है। 'methodOverride' नामक एक अन्य फंक्शन बिना बॉडी के परिभाषित होता है। इस इंटरफेस को 'DemoInterface' नामक दूसरी क्लास द्वारा कार्यान्वित किया जाता है। इस क्लास के अंदर, मुख्य फंक्शन परिभाषित होता है, और 'DemoInterface' का एक इंस्टेंस भी बनाया जाता है। इस इंस्टेंस पर स्टेटिक फंक्शन को कॉल किया जाता है, और अगला, इस इंस्टेंस पर 'methodOverride' फंक्शन को कॉल किया जाता है। एक ओवरराइड स्पेसिफिकेशन लिखा जाता है, जिसके तहत 'methodOverride' को परिभाषित किया जाता है। यह फंक्शन सिर्फ स्ट्रिंग को कंसोल पर प्रिंट करता है।

इंटरफेस में स्टेटिक मेथड्स (Java 8+):

  • इंटरफेस में स्टेटिक मेथड्स का शरीर होना चाहिए
  • वे इंप्लीमेंटिंग क्लासेस द्वारा विरासत में नहीं मिलते
  • इंटरफेस नाम के माध्यम से एक्सेस किए जाते हैं: MyInterface.staticFun()
  • उपयोगिता/हेल्पर मेथड्स के लिए उपयोगी

डिफ़ॉल्ट मेथड्स vs स्टेटिक मेथड्स:

विशेषताडिफ़ॉल्ट मेथडस्टेटिक मेथड
विरासतइंप्लीमेंटिंग क्लासेस को मिलता हैनहीं मिलता
ओवरराइडकिया जा सकता हैनहीं किया जा सकता
एक्सेसइंस्टेंस के माध्यम सेइंटरफेस नाम के माध्यम से
उद्देश्यAPI विकासउपयोगिता मेथड्स

उदाहरण - जावा 8 स्ट्रीम API में:

interface Stream {
    static  Stream of(T... values) { ... }  // स्टेटिक फैक्टरी
    default Stream filter(Predicate p) { ... } // डिफ़ॉल्ट मेथड
}
  1. - Java 8 में इंटरफेस संवर्द्धन (Interface Enhancements)

    Java 8 इंटरफेस में डिफ़ॉल्ट मेथड कार्यान्वयन की एक नई अवधारणा पेश करता है। यह क्षमता बैकवर्ड कम्पैटिबिलिटी के लिए जोड़ी गई है ताकि पुराने इंटरफेस Java 8 की लैम्ब्डा एक्सप्रेशन क्षमता का लाभ उठा सकें। उदाहरण के लिए, List या Collection इंटरफेस में forEach मेथड डिक्लेरेशन नहीं है। इस तरह के मेथड को ज

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

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

  1. - Java में Static Binding और Dynamic Binding

    हां! जब कंपाइलर जानता है कि मेथड निष्पादन के लिए किन ऑब्जेक्ट्स का उपयोग किया जाना है, तो यह रेफरेंस को ऑब्जेक्ट से स्टैटिकली बाइंड कर सकता है। उदाहरण के लिए, स्टैटिक वेरिएबल्स, प्राइवेट, फाइनल वेरिएबल्स स्टैटिक बाइंडिंग का उपयोग कर रहे हैं। जबकि यदि ऑब्जेक्ट पहचान रनटाइम पर की जानी है तो डायनामिक ब