एकाधिक विरासत को लागू करने के लिए जावा में हम इंटरफेस का उपयोग करते हैं। क्या यह इंटरफेस का एकमात्र उपयोग है? यदि हां, जावा में इंटरफ़ेस का मुख्य उपयोग क्या है? हमें जावा में इंटरफेस की आवश्यकता क्यों है?हमें जावा में इंटरफेस की आवश्यकता क्यों है?
उत्तर
मैं कहूंगा कि मुख्य उपयोग बहुरूपता है, या कई अलग-अलग वस्तुओं पर एक ही ऑपरेशन करने की क्षमता है। यदि विभिन्न ऑब्जेक्ट्स सभी एक ही इंटरफ़ेस को लागू करते हैं और एक ही विधि रखते हैं, तो आप उन सभी ऑब्जेक्ट्स को वेक्टर में स्टोर कर सकते हैं, उदाहरण के लिए, और वेक्टर के माध्यम से उस विधि को कॉल करने के माध्यम से पुनरावृत्त कर सकते हैं।
रोब मैं आपके साथ सहमत हूं लेकिन मैं इसे कक्षा विस्तार से इंटरफ़ेस प्राप्ति की अवधारणा को अलग करके जोड़ता हूं (जो वास्तव में सी ++ में संघर्ष करता है) आप एकाधिक विरासत के बिना बहुरूपता प्राप्त कर सकते हैं – Sindico
आपको उनकी आवश्यकता है ताकि आप पदानुक्रम के बाहर अपनी वस्तुओं को टाइप कर सकें।
उदाहरण के लिए, ऑब्जेक्ट्स की तुलना की जा सकती वस्तुओं को ऑब्जेक्ट पदानुक्रम पर कहीं भी कहीं भी हो सकता है - उन्हें एक सामान्य पूर्वजों की तुलना करने की आवश्यकता नहीं है, जिनकी तुलना की जा सकती है। String
एस की तुलना की जा सकती है, Integer
एस की तुलना की जा सकती है, आप अपनी खुद की Frame
एस भी बना सकते हैं, इसकी तुलना की जा सकती है (कहें, एक फ्रेम फ्रेम से "कम" है, यदि यह अग्रभूमि में अधिक है - यानी यदि यह ओवरले करेगा अन्य फ्रेम)। इस प्रकार, यदि आप किसी ऐसी चीज को संदर्भित करना चाहते हैं जिसकी तुलना की जा सकती है, तो आपको सबसे सामान्य पूर्वजों के साथ एक चर घोषित करने के लिए मजबूर होना होगा - इस मामले में, Object
। यह बहुत सामान्य है, क्योंकि तब यह उन मानों को भी प्राप्त कर सकता है जो तुलनात्मक नहीं हैं (और जब आप उनकी तुलना करने का प्रयास करते हैं तो त्रुटियां फेंक देंगे)।
इस प्रकार, इंटरफ़ेस Comparable
: यह सभी वर्गों कि तुलना कार्यक्षमता भर उपवर्ग सुपर क्लास-पदानुक्रम लागू चयन करता है।
इन प्रतिक्रियाओं के अतिरिक्त मैं कहूंगा कि इंटरफेस के लिए सबसे महत्वपूर्ण उपयोग आपके सॉफ़्टवेयर में घटकों के बीच युग्मन को कम करना है।
एक इंटरफ़ेस कक्षाओं के बीच एक समझौते का प्रतिनिधित्व करने की अनुमति देता है कि वे वास्तविक कार्यान्वयन से बंधे बिना एक दूसरे से कैसे बात करेंगे।
यह संकलित कोड को बदले बिना दूसरों द्वारा कार्यान्वयन को बदलने (परीक्षण के लिए बहुत उपयोगी, या उपयोग मामलों को बदलने) की अनुमति देता है।
कुछ कोड इसके बिना संकलित नहीं होंगे।
उदाहरण के लिए, में:
for (String name : list)
{
System.out.print("\nIn foreach loop: name: " + name);
}
list
java.lang.Iterable interface
को लागू करना चाहिए।
यह अनिवार्य रूप से वही है जैसा कि आपको कुछ उपयोग करने की आवश्यकता है क्योंकि हम यह करना है। यह ** पर्याप्त रूप से ** प्रश्न का उत्तर नहीं देता है। – rayryeng
मुझे पता है कि। मैं बस यह इंगित कर रहा हूं कि हमें इस मामले में उनका उपयोग करना होगा, चाहे हम इसे पसंद करते हैं या नहीं। मैं इसे पी.सी. को इकट्ठा करने के समान समझा जाना पसंद करता हूं .: हार्डवेयर कनेक्टर्स के बीच कुछ अनुरूपता के बिना, बिजली आपूर्ति या हार्ड डिस्क जैसे किसी हिस्से को प्रतिस्थापित करना बहुत कठिन होगा यदि वे अदला-बदले नहीं थे। यदि यह पर्याप्त रूप से प्रश्न का उत्तर नहीं देता है, तो मुझे लगता है कि कम से कम यह लोगों को समझने में मदद करता है कि वे उपयोग क्यों कर रहे हैं। –
मैं यह भी सोच रहा था कि इंटरफेस का उपयोग कैसे किया जाता है। मुझे आशा है कि इससे दूसरों की मदद मिलेगी:
एक इंटरफ़ेस एक अनुबंध (या प्रोटोकॉल, या एक सामान्य समझ) कक्षाओं के क्या कर सकता है। जब कोई वर्ग एक निश्चित इंटरफ़ेस लागू करता है, तो यह इंटरफ़ेस में घोषित सभी सार विधियों को कार्यान्वित करने का वादा करता है। इंटरफ़ेस सामान्य व्यवहारों का एक सेट परिभाषित करता है। इंटरफ़ेस लागू करने वाले वर्ग इन व्यवहारों से सहमत हैं और व्यवहारों के लिए अपना स्वयं का कार्यान्वयन प्रदान करते हैं। यह आपको वास्तविक कार्यान्वयन के बजाय इंटरफ़ेस पर प्रोग्राम करने की अनुमति देता है। इंटरफेस के मुख्य उपयोग में से एक दो वस्तुओं के बीच संचार अनुबंध प्रदान करता है।यदि आपको कक्षा एक इंटरफ़ेस लागू करता है, तो आप जानते हैं कि उस श्रेणी में कंक्रीट उस इंटरफ़ेस में घोषित विधियों के कार्यान्वयन शामिल हैं, और आप इन विधियों को सुरक्षित रूप से इनकार करने में सक्षम होने की गारंटी देते हैं। दूसरे शब्दों में, दो ऑब्जेक्ट्स उनके विशिष्ट कार्यान्वयन के बजाय इंटरफ़ेस में परिभाषित अनुबंध के आधार पर संवाद कर सकते हैं।
दूसरा, जावा एकाधिक विरासत का समर्थन नहीं करता है (जबकि सी ++ करता है)। एकाधिक विरासत आपको एक प्रत्यक्ष सुपरक्लास से अधिक से सबक्लास प्राप्त करने की अनुमति देती है। यदि कोई प्रत्यक्ष सुपरक्लास के विरोधाभासी कार्यान्वयन होते हैं तो यह एक समस्या उत्पन्न करता है। ( उपclass में कौन सा अनुसरण करना है?)। हालांकि, एकाधिक विरासत में इसकी जगह है। जावा आपको इंटरफेस से अधिक "लागू" करने की अनुमति देकर करता है (लेकिन आप केवल एक सुपरक्लास से "विस्तारित" हो सकते हैं)। चूंकि इंटरफ़ेस में वास्तविक कार्यान्वयन के बिना केवल अमूर्त विधियां हैं, इसलिए कई इंटरफेस के बीच कोई संघर्ष नहीं हो सकता है। (इंटरफ़ेस स्थिरांक पकड़ सकते हैं, लेकिन अनुशंसित नहीं है एक उपवर्ग परस्पर विरोधी स्थिरांक साथ दो इंटरफेस, संकलक इच्छा झंडा बाहर एक संकलन त्रुटि को लागू करता है।।) से
: http://www.ntu.edu.sg/home/ehchua/programming/java/J3b_OOPInheritancePolymorphism.html#zz-6.6
क्या आपके इंटरफेस में 'इंटरफेस तुलनात्मक' का उद्देश्य कैप्चर किया गया है? – overexchange
- 1. हमें गतिशील भाषाओं में इंटरफेस की आवश्यकता क्यों नहीं है?
- 2. हमें लक्ष्य नामस्थान की आवश्यकता क्यों है?
- 3. हमें "आउट" पैरामीटर की आवश्यकता क्यों है?
- 4. हमें "हटाएं []" ऑपरेटर की आवश्यकता क्यों है?
- 5. हमें फ़ील्ड टैग की आवश्यकता क्यों है?
- 6. हमें यहां टाइपनाम की आवश्यकता क्यों है?
- 7. हमें सी # प्रतिनिधियों की आवश्यकता क्यों है
- 8. हमें वेब-सॉकेट की आवश्यकता क्यों है?
- 9. हमें डिज़ाइन पैटर्न की आवश्यकता क्यों है
- 10. हमें संरचना की आवश्यकता क्यों है? (सी #)
- 11. हमें strdup() की आवश्यकता क्यों है?
- 12. हमें सजावटी डिजाइन पैटर्न में सजावट की आवश्यकता क्यों है?
- 13. हमें डेटाबेस टेबल्स में ऑडिट कॉलम की आवश्यकता क्यों है?
- 14. हमें सी ++ में शुद्ध आभासी विनाशक की आवश्यकता क्यों है?
- 15. हमें RuntimeException में प्रयास करने की आवश्यकता क्यों नहीं है?
- 16. हमें हडोप स्टैक में ज़ूकीपर की आवश्यकता क्यों है?
- 17. हमें इस विशेष === ऑपरेटर की आवश्यकता क्यों है?
- 18. हमें क्यों जारी रखने की विधि की आवश्यकता है?
- 19. रिपोजिटरी पैटर्न - हमें इंटरफेस की ज़रूरत क्यों है?
- 20. जावा: रैपर वर्गों की आवश्यकता क्यों है?
- 21. हमें तीसरे पक्ष के निर्माण उपकरण की आवश्यकता क्यों है?
- 22. हमें Nuget जैसे पैकेज प्रबंधक की आवश्यकता क्यों है?
- 23. हमें एक निजी निर्माता की आवश्यकता क्यों है?
- 24. हमें एक अस्थायी डेटाबेस की आवश्यकता क्यों है?
- 25. हमें ब्लॉक मैक्रो के आसपास कोष्ठक की आवश्यकता क्यों है?
- 26. हमें ढांचे के ढांचे की आवश्यकता क्यों है?
- 27. हमें मॉलोक रिटर्न डालने की आवश्यकता क्यों है?
- 28. हमें मूल क्वेरी बनाने की आवश्यकता क्यों है?
- 29. एमवीसी: हमें "नियंत्रक" की आवश्यकता क्यों है, या हमें इस पैटर्न का उपयोग कब करना चाहिए?
- 30. PHP: हमें स्ट्रिंग तुलना फ़ंक्शन की आवश्यकता क्यों है?
के संभावित डुप्लिकेट [क्यों हम इंटरफेस को कार्यान्वित कर रहे हैं?] (http://stackoverflow.com/questions/1583654/why-we-are-implementing-interfaces) – Thilo
इसके अलावा एक अच्छी व्याख्या [यहां] (http://programmers.stackexchange.com/a/ 131334/146150)। –