सभी अच्छी तरह से और अच्छा जब आपके पास प्रश्न में सभी कोड पर कुल नियंत्रण होता है और इस अपफ्रंट को लागू कर सकता है। अब कल्पना करें कि आपके पास एक मौजूदा सार्वजनिक वर्ग है जिसका उपयोग कई स्थानों पर विधि के साथ किया जाता है
public class MyClass{
private String name;
MyClass(String name){
this.name = name;
}
public String getName(){
return name;
}
}
अब आपको इसे शेल्फ में पास करने की आवश्यकता है WizzBangProcessor जिसे WBPInterface को लागू करने के लिए कक्षाओं की आवश्यकता होती है ... जिसमें गेटनेम () विधि भी है, लेकिन आपके ठोस कार्यान्वयन के बजाय, यह इंटरफ़ेस एक प्रकार का नाम वापस करने की विधि की अपेक्षा करता है। Wizz बैंग प्रसंस्करण की।
C # में यह एक ट्रिवियल होगा
public class MyClass : WBPInterface{
private String name;
String WBPInterface.getName(){
return "MyWizzBangProcessor";
}
MyClass(String name){
this.name = name;
}
public String getName(){
return name;
}
}
जावा टफ में आपको मौजूदा तैनात कोड बेस में हर बिंदु की पहचान करनी होगी, जहां आपको एक इंटरफेस से दूसरे में बदलने की जरूरत है। यकीन है कि WizzBangProcessor कंपनी को getWizzBangProcessName () का उपयोग करना चाहिए था, लेकिन वे डेवलपर्स भी हैं। उनके संदर्भ में getName ठीक था। दरअसल, जावा के बाहर, अधिकांश अन्य OO आधारित भाषाएं इसका समर्थन करती हैं। जावा सभी तरीकों को एक ही विधि NAME के साथ लागू करने के लिए मजबूर करने में दुर्लभ है।
अधिकांश अन्य भाषाओं में एक कंपाइलर होता है जो "इस वर्ग में इस पद्धति जो इस कार्यान्वित इंटरफ़ेस में इस पद्धति के हस्ताक्षर से मेल खाता है, इसे लागू करना है" कहने के लिए एक निर्देश लेने से अधिक खुशी है। अंतरापृष्ठों को परिभाषित करने के पूरे बिंदु के बाद परिभाषा को क्रियान्वयन से अलग करने की अनुमति है। (जावा में इंटरफेस में डिफ़ॉल्ट तरीके होने पर भी मुझे शुरू न करें, अकेले डिफ़ॉल्ट को ओवरराइड करने दें ... क्योंकि निश्चित रूप से, सड़क कार के लिए डिज़ाइन किए गए प्रत्येक घटक को उड़ान कार में पटक दिया जाना चाहिए और बस काम करना चाहिए - हे वे दोनों कार हैं ... मुझे यकीन है कि डिफ़ॉल्ट कार्यक्षमता का कहना है कि आपकी संतृप्त नौसेना डिफ़ॉल्ट पिच और रोल इनपुट से प्रभावित नहीं होगी, क्योंकि कारें केवल जम्हाई लेती हैं!