जावा में एक इंटरफेस क्लास के समान है लेकिन, इसमें केवल एब्स्ट्रैक्ट मेथड्स और फील्ड्स होते हैं जो फाइनल और स्टैटिक हैं।
- यह मेथड प्रोटोटाइप्स का एक विनिर्देश है। जब भी आपको प्रोग्रामर को मार्गदर्शन करने या, एक अनुबंध निर्दिष्ट करने की आवश्यकता होती है कि किसी प्रकार के मेथड्स और फील्ड्स कैसे होने चाहिए, आप एक इंटरफेस परिभाषित कर सकते हैं।
- यदि आपको अपनी क्लास को एक निश्चित विनिर्देश का पालन करने की आवश्यकता है तो आपको आवश्यक इंटरफेस को इम्प्लीमेंट करना होगा और उस इंटरफेस के सभी एब्स्ट्रैक्ट मेथड्स के लिए बॉडी प्रदान करनी होगी।
- यदि आप एक इंटरफेस के सभी एब्स्ट्रैक्ट मेथड्स का कार्यान्वयन प्रदान नहीं करते हैं (जिसे आप इम्प्लीमेंट करते हैं) तो एक कंपाइल टाइम एरर उत्पन्न होता है।
यदि इंटरफेसेस में नए मेथड्स जोड़े जाते हैं तो क्या होगा?
मान लें कि हम एक निश्चित इंटरफेस का उपयोग कर रहे हैं और उस इंटरफेस के सभी एब्स्ट्रैक्ट मेथड्स को इम्प्लीमेंट किया है और बाद में नए मेथड्स जोड़े गए। फिर, इस इंटरफेस का उपयोग करने वाली सभी क्लासेस तब तक काम नहीं करेंगी जब तक आप उनमें से प्रत्येक में नए जोड़े गए मेथड्स को इम्प्लीमेंट नहीं करते।
इस मुद्दे को हल करने के लिए Java8 से डिफ़ॉल्ट मेथड्स पेश किए गए हैं।
डिफ़ॉल्ट मेथड्स
एक डिफ़ॉल्ट मेथड को डिफेंडर मेथड या वर्चुअल एक्सटेंशन मेथड के रूप में भी जाना जाता है। आप default कीवर्ड का उपयोग करके एक डिफ़ॉल्ट मेथड को परिभाषित कर सकते हैं -
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