परिचय
Oracle के Javadocs के अनुसार -
डिफ़ॉल्ट मेथड्स आपको अपने लाइब्रेरी के इंटरफेस में नई कार्यक्षमता जोड़ने में सक्षम बनाते हैं और उन इंटरफेस के पुराने संस्करणों के लिए लिखे गए कोड के साथ बाइनरी कम्पैटिबिलिटी सुनिश्चित करते हैं।
एक स्टेटिक मेथड वह मेथड है जो उस क्लास से जुड़ा होता है जिसमें इसे परिभाषित किया गया है न कि किसी ऑब्जेक्ट से। क्लास का हर इंस्टेंस अपने स्टेटिक मेथड्स को साझा करता है।
इंटरफेस में स्टेटिक मेथड इंटरफेस क्लास का हिस्सा होते हैं, इन्हें इम्प्लीमेंट या ओवरराइड नहीं किया जा सकता जबकि क्लास डिफ़ॉल्ट मेथड को ओवरराइड कर सकती है।
| क्र. सं. | मुख्य बिंदु | स्टेटिक इंटरफेस मेथड | डिफ़ॉल्ट मेथड |
|---|---|---|---|
| 1 | बुनियादी | यह एक स्टेटिक मेथड है जो केवल इंटरफेस से संबंधित है। हम इस मेथड का कार्यान्वयन इंटरफेस में ही लिख सकते हैं | यह डिफ़ॉल्ट कीवर्ड वाला एक मेथड है और क्लास इस मेथड को ओवरराइड कर सकती है |
| 2 | मेथड इनवोकेशन | स्टेटिक मेथड को केवल इंटरफेस क्लास पर इनवोक किया जा सकता है, क्लास पर नहीं। | इसे इंटरफेस के साथ-साथ क्लास पर भी इनवोक किया जा सकता है |
| 3 | मेथड नाम | इंटरफेस और इम्प्लीमेंटिंग क्लास, दोनों का एक ही नाम का स्टेटिक मेथड हो सकता है बिना एक-दूसरे को ओवरराइड किए। | हम इम्प्लीमेंटिंग क्लास में डिफ़ॉल्ट मेथड को ओवरराइड कर सकते हैं |
| 4 | उपयोग का मामला | इसे यूटिलिटी मेथड के रूप में इस्तेमाल किया जा सकता है | इसे सभी इम्प्लीमेंटिंग क्लास में सामान्य कार्यक्षमता प्रदान करने के लिए इस्तेमाल किया जा सकता है |
इंटरफेस में डिफ़ॉल्ट और स्टेटिक मेथड का उदाहरण
public interface DefaultStaticExampleInterface {
default void show() {
System.out.println("Java 8 में - डिफ़ॉल्ट मेथड - DefaultStaticExampleInterface");
}
static void display() {
System.out.println("DefaultStaticExampleInterface में");
}
}
public class DefaultStaticExampleClass implements DefaultStaticExampleInterface {
}
public class Main {
public static void main(String args[]) {
// इंटरफेस पर इंटरफेस स्टेटिक मेथड कॉल करें
DefaultStaticExampleInterface.display();
DefaultStaticExampleClass defaultStaticExampleClass = new DefaultStaticExampleClass();
// क्लास पर डिफ़ॉल्ट मेथड कॉल करें
defaultStaticExampleClass.show();
}
}