जावा में एक इंटरफ़ेस वर्ग के समान है, लेकिन इसमें केवल अमूर्त विधियाँ और फ़ील्ड शामिल हैं जो अंतिम और स्थिर हैं।
- यह विधि प्रोटोटाइप का एक विनिर्देश है। जब भी आपको प्रोग्रामर का मार्गदर्शन करने की आवश्यकता हो या, यह निर्दिष्ट करते हुए अनुबंध करें कि किसी प्रकार के तरीके और क्षेत्र कैसे होने चाहिए, तो आप एक इंटरफ़ेस को परिभाषित कर सकते हैं।
- यदि आपको एक निश्चित विनिर्देश का पालन करने के लिए अपनी कक्षा की आवश्यकता है, तो आपको आवश्यक इंटरफ़ेस को लागू करने और उस इंटरफ़ेस में सभी सार विधियों के लिए बॉडी प्रदान करने की आवश्यकता है।
- यदि आप एक इंटरफ़ेस के सभी सार विधियों के कार्यान्वयन प्रदान नहीं करते हैं (आप, कार्यान्वित करते हैं) तो एक संकलन समय त्रुटि उत्पन्न होती है।
क्या होगा यदि इंटरफ़ेस में नई विधियाँ जोड़ी जाएँ?
मान लीजिए कि हम कुछ इंटरफ़ेस का उपयोग कर रहे हैं और उस इंटरफ़ेस में सभी अमूर्त विधियों को लागू किया है और बाद में नए तरीके जोड़े गए हैं। फिर, इस इंटरफ़ेस का उपयोग करने वाली सभी कक्षाएं तब तक काम नहीं करेंगी जब तक आप उनमें से प्रत्येक में नई जोड़ी गई विधियों को लागू नहीं करते।
Java8 से इस समस्या को हल करने के लिए डिफ़ॉल्ट तरीके पेश किए गए हैं।
डिफ़ॉल्ट तरीके
एक डिफ़ॉल्ट विधि को डिफेंडर विधि या वर्चुअल एक्सटेंशन विधि के रूप में भी जाना जाता है। आप डिफ़ॉल्ट . का उपयोग करके एक डिफ़ॉल्ट विधि परिभाषित कर सकते हैं कीवर्ड के रूप में -
default void display() { System.out.println("This is a default method"); }
एक बार इंटरफ़ेस में किसी विशेष विधि के लिए डिफ़ॉल्ट कार्यान्वयन लिखें। इसे उन कक्षाओं में लागू करने की कोई आवश्यकता नहीं है जो पहले से ही इस इंटरफ़ेस का उपयोग (कार्यान्वयन) कर रहे हैं।
निम्नलिखित जावा उदाहरण जावा में डिफ़ॉल्ट विधि के उपयोग को दर्शाता है।
उदाहरण
interface sampleInterface{ public void demo(); default void display() { System.out.println("This is a default method"); } } public class DefaultMethodExample implements sampleInterface{ public void demo() { System.out.println("This is the implementation of the demo method"); } public static void main(String args[]) { DefaultMethodExample obj = new DefaultMethodExample(); obj.demo(); obj.display(); } }
आउटपुट
This is the implementation of the demo method This is a default method