] हालाँकि, जब इन इंटरफेस में समान हस्ताक्षर वाले तरीके होते हैं, तो एक प्रश्न उठता है: कंपाइलर कैसे हल करता है कि कौन सा इंटरफ़ेस विधि ओवरराइड है? संकलक अपने इंटरफ़ेस मूल के आधार पर तरीकों के बीच अंतर नहीं करता है। int f (); } इंटरफ़ेस बी { int f (); } क्लास टेस्ट इम्प्लीमेंट्स ए, बी { @Override सार्वजनिक int f () { रिटर्न 0; } }
इस परिदृश्य में, परीक्षण A और B दोनों को लागू करता है, और दोनों इंटरफेस एक ही हस्ताक्षर के साथ f () नामक एक विधि को परिभाषित करते हैं। परीक्षण में इस पद्धति को ओवरराइड करके, वर्ग दोनों इंटरफेस से एफ () विधि को प्रभावी ढंग से ओवरराइड करता है, भले ही केवल एक @Override एनोटेशन मौजूद है। नतीजतन, कंपाइलर पहले ओवरराइडिंग विधि का चयन करता है, जो इसके इंटरफ़ेस मूल की परवाह किए बिना सामना करता है। ऐसे मामलों में, कंपाइलर एक त्रुटि की रिपोर्ट करेगा, क्योंकि एक ही हस्ताक्षर के साथ दो तरीके लेकिन एक ही वर्ग में अलग -अलग रिटर्न प्रकारों के लिए संभव नहीं है।
शून्य वर्तमान ();
}
इंटरफ़ेस अतिथि {
बूलियन वर्तमान ();
}
क्लास प्रेजेंटेबल इम्प्लीमेंट्स गिफ्ट, गेस्ट {
@Override
सार्वजनिक शून्य वर्तमान () {
System.out.println ("एक उपहार के रूप में वर्तमान!");
}
}
निष्कर्ष में, जब कोई वर्ग ओवरराइड-समतुल्य तरीकों के साथ कई इंटरफेस को लागू करता है, तो कंपाइलर पहचानता है कि लागू करने के लिए केवल एक ही विधि है, और ओवरराइडिंग विधि पर @Override एनोटेशन सभी इंटरफेस पर लागू होता है। हालाँकि, विधि हस्ताक्षर के बीच असंगतता संकलन त्रुटियों को जन्म देगी।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3