कार्यान्वयन बनाम विस्तार
कार्यान्वयन और विस्तार जावा प्रोग्रामिंग भाषा में पाए जाने वाले दो कीवर्ड हैं जो अतिरिक्त कार्यक्षमता को एक नई कक्षा में स्थानांतरित करने का एक साधन प्रदान करते हैं। एक इंटरफ़ेस को लागू करने के लिए इम्प्लीमेंट कीवर्ड का स्पष्ट रूप से उपयोग किया जाता है, जबकि एक्सटेंड कीवर्ड का उपयोग (सुपर) वर्ग से विरासत में प्राप्त करने के लिए किया जाता है। कृपया ध्यान दें कि इनहेरिटेंस और इंटरफेस की अवधारणाएं अधिकांश अन्य ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग भाषाओं जैसे C और VB. NET में मौजूद हैं, लेकिन वे उन अवधारणाओं को लागू करने के लिए अलग सिंटैक्स या कीवर्ड प्रदान करते हैं। यह आलेख केवल जावा में परिभाषित खोजशब्दों को लागू करने और विस्तारित करने पर केंद्रित है।
विस्तार
Extends कीवर्ड का उपयोग जावा प्रोग्रामिंग लैंग्वेज में इनहेरिटेंस की अवधारणा को लागू करने के लिए किया जाता है। वंशानुक्रम अनिवार्य रूप से एक नए परिभाषित वर्ग द्वारा मौजूदा वर्ग के गुणों और व्यवहार को विस्तारित करने की अनुमति देकर कोड पुन: उपयोग प्रदान करता है। जब एक नया उपवर्ग (या व्युत्पन्न वर्ग) एक सुपर क्लास (या मूल वर्ग) का विस्तार करता है, तो उपवर्ग सुपर क्लास की सभी विशेषताओं और विधियों को इनहेरिट करेगा। उपवर्ग वैकल्पिक रूप से व्यवहार को ओवरराइड कर सकता है (विधियों को नई या विस्तारित कार्यक्षमता प्रदान करता है) जो मूल वर्ग से विरासत में मिला है। एक उपवर्ग जावा में कई सुपर क्लास का विस्तार नहीं कर सकता है। इसलिए, आप एकाधिक इनहेरिटेंस के लिए एक्सटेंड का उपयोग नहीं कर सकते हैं। एकाधिक वंशानुक्रम प्राप्त करने के लिए, आपको नीचे बताए अनुसार इंटरफेस का उपयोग करने की आवश्यकता है।
कार्यान्वयन
जावा प्रोग्रामिंग भाषा में इम्प्लीमेंट कीवर्ड का उपयोग एक वर्ग द्वारा इंटरफेस को लागू करने के लिए किया जाता है। जावा में एक इंटरफ़ेस एक अमूर्त प्रकार है जिसका उपयोग अनुबंध को निर्दिष्ट करने के लिए किया जाता है जिसे कक्षाओं द्वारा कार्यान्वित किया जाना चाहिए, जो उस इंटरफ़ेस को लागू करते हैं।आम तौर पर एक इंटरफ़ेस में केवल विधि हस्ताक्षर और निरंतर घोषणाएं होंगी। कोई भी इंटरफ़ेस जो किसी विशेष इंटरफ़ेस को लागू करता है, उसे इंटरफ़ेस में परिभाषित सभी विधियों को लागू करना चाहिए, या एक अमूर्त वर्ग के रूप में घोषित किया जाना चाहिए। जावा में, ऑब्जेक्ट संदर्भ के प्रकार को इंटरफ़ेस प्रकार के रूप में परिभाषित किया जा सकता है। लेकिन वह वस्तु या तो शून्य होनी चाहिए या उस वर्ग की वस्तु होनी चाहिए, जो उस विशेष इंटरफ़ेस को लागू करती है। जावा में इम्प्लीमेंट कीवर्ड का उपयोग करके, आप एक ही क्लास में कई इंटरफेस लागू कर सकते हैं। एक इंटरफ़ेस दूसरे इंटरफ़ेस को लागू नहीं कर सकता है। हालाँकि एक इंटरफ़ेस एक वर्ग का विस्तार कर सकता है।
कार्यान्वयन और विस्तार के बीच अंतर
यद्यपि, इम्प्लीमेंट और एक्सटेंड दो कीवर्ड हैं जो जावा प्रोग्रामिंग भाषा में एक वर्ग को विशेषताओं और व्यवहार को इनहेरिट करने के लिए एक तंत्र प्रदान करते हैं, उनका उपयोग दो अलग-अलग उद्देश्यों के लिए किया जाता है। एक निश्चित इंटरफ़ेस को लागू करने के लिए एक वर्ग के लिए इम्प्लीमेंट कीवर्ड का उपयोग किया जाता है, जबकि एक सुपर क्लास से एक उपवर्ग के लिए एक्सटेंड कीवर्ड का उपयोग किया जाता है।जब कोई वर्ग एक इंटरफ़ेस लागू करता है, तो उस वर्ग को इंटरफ़ेस में परिभाषित सभी विधियों को लागू करने की आवश्यकता होती है, लेकिन जब एक उपवर्ग एक सुपर क्लास का विस्तार करता है, तो यह मूल वर्ग में शामिल विधियों को ओवरराइड कर सकता है या नहीं। अंत में, इम्प्लीमेंट्स और एक्सटेंड्स के बीच एक और महत्वपूर्ण अंतर यह है कि, एक क्लास कई इंटरफेस को लागू कर सकती है लेकिन यह जावा में केवल एक सुपर क्लास से ही एक्सटेंड हो सकती है। सामान्य तौर पर, उच्च लचीलेपन और युग्मन को कम करने की क्षमता जैसे कई कारणों से, एक्सटेंड्स (विरासत) के उपयोग की तुलना में इम्प्लीमेंट्स (इंटरफेस) के उपयोग को अधिक अनुकूल माना जाता है। इसलिए व्यवहार में, एक इंटरफ़ेस के लिए प्रोग्रामिंग को बेस क्लास से विस्तारित करने पर प्राथमिकता दी जाती है।