2013-02-14 19 views
8

मुझे अपने व्युत्पन्न कक्षाओं में कुछ सुपर क्लास विधियों को ओवरराइड करते समय @Override एनोटेशन बहुत उपयोगी पाया गया है। असल में संकलक मेरे कार्यक्रम में त्रुटियों का पता लगाता है जो हमेशा एक अच्छी बात है। लेकिन जावा में @ इम्प्लीमेंट एनोटेशन क्यों नहीं है?जावा में @Implements एनोटेशन क्यों नहीं है?

+0

'@ Override' एक औपचारिकता की तरह है में परिभाषित तरीकों को लागू करने के तरीकों पर @Override उपयोग कर सकते हैं; यह वास्तव में जरूरत नहीं है। यदि आपके पास उस एनोटेशन नहीं है तो संकलक विफल नहीं होगा। जब आप * एक इंटरफ़ेस को कार्यान्वित कर रहे हों, हालांकि ... यदि आप उस इंटरफ़ेस में प्रत्येक परिभाषित विधि को लागू नहीं कर रहे हैं तो संकलक चिल्लाएगा। – Makoto

+0

@ मकोटो - मुझे संदेह है कि उसका मतलब कंपाइलर की बजाय उसका आईडीई है। उस ने कहा, यदि आप 'जावैक-एक्सलिंट: ओवरराइड' (या सिर्फ '-Xlint') करना चाहते थे, तो * आपको * इसके बारे में बताएगा, तो हो सकता है कि वह ऐसा कर रहा हो। –

+0

(यदि आप ओवरराइड करते समय कोई त्रुटि करते हैं, तो मुझे इसके बारे में बताएगा, मुझे कहना चाहिए)। –

उत्तर

14

क्योंकि आप इंटरफेस द्वारा परिभाषित विधियों के लिए @Override का उपयोग करते हैं।

(हाँ, आप के बजाय "अधिभावी" "को लागू करने" कर रहे हैं ... लेकिन @Override दोनों के लिए प्रयोग किया जाता है)

+0

हालांकि जेडीके 6 के बाद से, हालांकि। –

+2

@RyanStewart - यह सच है, लेकिन चूंकि हम 6 साल पहले रिलीज हो चुके हैं और वास्तव में 6 के लिए ईओएल पर मैंने वास्तव में कुछ भी योग्यता बंद कर दी है जब तक कि यह 6 बनाम 7 चीज नहीं है :) –

+1

फिर भी, दुख की बात है कि, पिछले वर्ष (आखिरी टिप्पणी के 4 साल बाद) मुझे जावा 5 पर पोर्ट कोड करना पड़ा था, इसलिए यह ओरेकल 11 के अंदर चला सकता था। पुराने जावा कभी मर नहीं जाते थे, वे सिर्फ अवांछित इंतजार में छिपाते थे। –

0

एक अंतरफलक कीवर्ड पहले से मौजूद है को लागू करने के लिए: implements। लेकिन ओवरराइड के लिए, ऐसा कोई कीवर्ड मौजूद नहीं था। @Override कोई कीवर्ड नहीं है लेकिन समान कार्य करता है।

1

इंटरफ़ेस को लागू करने के लिए हम implements का उपयोग करते हैं और यदि उस इंटरफ़ेस में कोई विधि मौजूद है तो हम कार्यान्वयन प्रदान करने के लिए उन विधियों को ओवरराइड करते हैं।

तो केवल @Override एनोटेशन है क्योंकि दोनों मामलों (कक्षा या इंटरफ़ेस) में हम हमेशा ओवरराइड करते हैं।

2

जावा 6 जब से तुम वर्ग इंटरफेस

संबंधित मुद्दे