Java में Abstract Class और Interface में क्या अंतर है?



यह लेख आपको उदाहरण कार्यक्रम की मदद से जावा में अमूर्त वर्ग और इंटरफ़ेस के बीच महत्वपूर्ण अंतर को समझने में मदद करेगा।

सार वर्ग और इंटरफेस दो मुख्य बिल्डिंग ब्लॉक हैंकी । हालांकि दोनों को मुख्य रूप से अमूर्तता के लिए उपयोग किया जाता है, वे एक दूसरे से बहुत अलग हैं और परस्पर विनिमय नहीं किया जा सकता है। इस लेख में आइए जानें कि जावा में सार वर्ग और इंटरफ़ेस में क्या अंतर है।

इस लेख में चर्चा किए गए विषय इस प्रकार हैं:





अमूर्त वर्ग और इंटरफ़ेस के बीच अंतर को समझने के लिए , आपको यह जानने की जरूरत है कि एक सार वर्ग क्या है और एक इंटरफ़ेस क्या है। तो, चलिए चर्चा करते हैं कि वे क्या हैं।

Java में Abstract Class क्या है?

किसी भी प्रोग्रामिंग भाषा में, अमूर्तता इसका मतलब है कि दक्षता को बढ़ाने के लिए आवश्यक विवरणों पर ध्यान केंद्रित करने के लिए उपयोगकर्ता से अप्रासंगिक विवरणों को छुपाना जिससे जटिलता कम हो। जावा में, अमूर्त का उपयोग करके प्राप्त किया जाता है अमूर्त वर्ग । एक अमूर्त वर्ग उपवर्गों की सामान्य विशेषताओं को कैप्चर करता है और इसमें कोई सार पद्धति शामिल हो सकती है या नहीं भी हो सकती है। इसे तत्काल नहीं किया जा सकता है, लेकिन इसका उपवर्गों द्वारा केवल सुपरक्लास के रूप में उपयोग किया जा सकता है। यहाँ एक उदाहरण कार्यक्रम है जो अमूर्त वर्ग को प्रदर्शित करता है:



ध्यान दें: एक सार विधि , एक विधि है जो जगह में लागू नहीं होती है और जोड़ता हैअधूरापन कक्षा

पैकेज MyPackage // अमूर्त वर्ग सार वर्ग पशु {String AnimalName = ’’ Animal (स्ट्रिंग नाम) {this.AnimalName = name} // गैर-सार विधियों की घोषणा करें // इसमें डिफ़ॉल्ट कार्यान्वयन सार्वजनिक शून्य BasicInfo (स्ट्रिंग विवरण) {सिस्टम है। out.println (this.AnimalName + '' + details)} // एब्स्ट्रैक्ट मेथड्स जो // होगा जो कि इसके सबक्लास द्वारा लागू किया जाएगा (एस) एब्सट्रैक्ट पब्लिक वेड हैबिटैट () एब्सट्रैक्ट पब्लिक वॉयड रेस्पिरेटरी ()} क्लास स्टेस्ट्रियल एनिमल {// कंस्ट्रक्टर टेरेस्ट्रियल (स्ट्रिंग नाम) {सुपर (नाम)} @Override सार्वजनिक शून्य निवास स्थान () {System.out.println ('भूमि पर छोड़ें और')} @Override public void respiration () 'System.out.println ('respire) फेफड़े या ट्रेकिआ के माध्यम से। ')}} क्लास एक्वाटिक फैली हुई है एनिमल {// कंस्ट्रक्टर एक्वाटिक (स्ट्रिंग नाम) {सुपर (नाम)} @ ऑवरराइड सार्वजनिक शून्य निवास स्थान () {System.out.println (' 'पानी में निकलता है और') } @Override सार्वजनिक शून्य श्वसन () {System.out.println ('गिल्स या उनकी त्वचा के माध्यम से श्वसन करें।')}} कक्षा AbstractClassDemo {सार्वजनिक स्थैतिक voi d मुख्य (स्ट्रिंग [] args) {// टेरेस्ट्रियल क्लास // का ऑब्जेक्ट बनाना और एनिमल क्लास संदर्भ का उपयोग करना। Animal object1 = new Terrestrial ('Humans') object1.BasicInfo ('स्थलीय प्राणी हैं, वे') object1.habitat () object1.respiration () System.out.println ('') // सर्कल क्लास की वस्तुओं का निर्माण करते हैं। object2 = new Aquatic ('Fishes') object2.BasicInfo ('aqautic प्राणी हैं, वे') object2.habitat () object2.respiration ()}}

आउटपुट

मनुष्य स्थलीय प्राणी हैं, वे जमीन पर छोड़ते हैं और फेफड़ों या श्वासनली के माध्यम से श्वसन करते हैं। मछलियाँ अकाट्य प्राणी हैं, वे इसे पानी में छोड़ देती हैं और गलफड़ों या उनकी त्वचा के माध्यम से सांस लेती हैं।

बुनियादी जानकारी () द्वारा साझा की गई विधि है स्थलीय तथा जलीय कक्षाएं। जबसे पशु वर्ग शुरू नहीं किया जा सकता है, हम वस्तुओं का निर्माण कर रहे हैं स्थलीय तथा जलीय प्रोग्रामिंग उद्देश्य के लिए कक्षाएं। अगला, हमारे पास इंटरफेस है।



जावा में इंटरफ़ेस

हासिल करने का दूसरा तरीका अमूर्तता जावा में उपयोग करके है इंटरफेसएक इंटरफ़ेस अमूर्त तरीकों का एक संग्रह है, इसमें कोई ठोस नहीं है , एक अमूर्त वर्ग के विपरीत। लेकिन अमूर्त वर्ग के विपरीत, एक इंटरफ़ेस जावा में पूर्ण अमूर्तता प्रदान करता है। इसमें कक्षा की तरह ही विधियाँ और चर दोनों हो सकते हैं। हालाँकि, एक इंटरफ़ेस में घोषित तरीके डिफ़ॉल्ट रूप से अमूर्त हैं।यहाँ एक है प्रदर्शन अमूर्त वर्ग:

पैकेज MyPackage इंटरफ़ेस पशु {// सार तरीके शून्य आवास () शून्य श्वसन ()} वर्ग टेरेस्ट्रियल ए लागू करता है पशु {स्ट्रिंग एनिमलनेम = ’// कंस्ट्रक्टर टेरेस्ट्रियल (स्ट्रिंग नाम) {ए.निमलनाम = नाम} @ ओवरराइड सार्वजनिक शून्य आवास () {System.out.println (this.AnimalName + 'भूमि पर छोड़ें और')} @Override public void श्वसन () {System.out.println ('फेफड़े या श्वासनली के माध्यम से श्वसन करें।')}} कक्षा AquaticA पशुओं को लागू करता है {String। AnimalName = '' // कंस्ट्रक्टर AquaticA (स्ट्रिंग नाम) {this.AnimalName = name} @Override public void वास () {System.out.println (this.AnimalName + 'पानी में छोड़ दें और')} @Override public void respiration () {System.out.println ('गिल्स या उनकी स्किन के माध्यम से रिस्पॉन्स करें')}} क्लास JavaInterfaceDemo {पब्लिक स्टैटिक शून्य मेन (स्ट्रिंग [] args) {// टेरेस्ट्रियल क्लास का ऑब्जेक्ट बनाना और एनिमल क्लास संदर्भ का उपयोग करना । पशु ऑब्जेक्ट 1 = नया टेरेस्ट्रियल ('ह्यूमन') ऑब्जेक्ट1.हबिटैट () ऑब्जेक्ट1.respiration () System.out.println ('') // सर्कल क्लास के ऑब्जेक्ट्स का निर्माण एनिमल ऑब्जेक्ट 2 = नया एक्वाटिक ('मछलियां') object2.habitat () object2.respiration ()}}

आउटपुट

मनुष्य जमीन पर छोड़ते हैं और फेफड़ों या श्वासनली के माध्यम से सांस लेते हैं। मछलियां पानी में निकल जाती हैं और गलफड़ों या उनकी त्वचा के माध्यम से सांस लेती हैं।

यदि आपके बीच कोई कॉमन कोड नहीं है कक्षाएं , तो आप इंटरफ़ेस के लिए जा सकते हैं। एक इंटरफ़ेस एक वर्ग के ब्लूप्रिंट की तरह अधिक है क्योंकि इसमें कोई गैर-सार तरीके नहीं हैं।

उपरोक्त सामग्री से, आपने अमूर्त वर्ग और इंटरफ़ेस में महत्वपूर्ण अंतर देखा होगा । जो अमूर्त वर्ग के विपरीत है, एक इंटरफ़ेस पूर्ण प्रदान करता है अमूर्तता जावा में। अब आगे बढ़ते हैं और अन्य अंतरों को सूचीबद्ध करते हैं।

सार वर्ग बनाम इंटरफ़ेस

नीचे दी गई तालिका सार वर्ग और इंटरफ़ेस के बीच के प्रमुख अंतरों को सूचीबद्ध करती है।

पैरामीटर सार वर्ग इंटरफेस

डिफ़ॉल्ट विधि कार्यान्वयन

इसमें डिफ़ॉल्ट विधि कार्यान्वयन हो सकता है

इंटरफेस शुद्ध अमूर्तता प्रदान करते हैं और इसमें बिल्कुल भी कार्यान्वयन नहीं हो सकता है

चर

इसमें गैर-अंतिम चर हो सकते हैं।

एक अंतरफलक में घोषित चर डिफ़ॉल्ट अंतिम रूप से होते हैं

कीवर्ड का इस्तेमाल किया

कीवर्ड का उपयोग करके एक सार वर्ग बढ़ाया जा सकता है

इंटरफ़ेस को कीवर्ड के उपयोग से कार्यान्वित किया जाना चाहिए

एक्सेस मॉडिफायर

कर सकते हैंसार्वजनिक, संरक्षित, निजी और डिफ़ॉल्ट संशोधक है

इंटरफ़ेस विधियाँ डिफ़ॉल्ट रूप से सार्वजनिक होती हैं। आप इसके साथ किसी अन्य एक्सेस संशोधक का उपयोग नहीं कर सकते

कार्यान्वयन की गति

यह इंटरफेस से तेज है

एक इंटरफ़ेस कुछ धीमा है और अतिरिक्त अप्रत्यक्षता की आवश्यकता है

सामान्य वर्ग

यह केवल एक सार वर्ग का विस्तार कर सकता है

कई इंटरफेस लागू कर सकते हैं

बनाने वाले

एक सार वर्ग में कंस्ट्रक्टर हो सकते हैं

एक इंटरफ़ेस में कंस्ट्रक्टर नहीं हो सकते हैं

एकाधिक वंशानुक्रम

एक अमूर्त वर्ग दूसरे वर्ग का विस्तार कर सकता है और कई जावा इंटरफेस को लागू कर सकता है

इंटरफ़ेस केवल दूसरे जावा इंटरफ़ेस का विस्तार कर सकता है

जावास्क्रिप्ट में सरणी की लंबाई प्राप्त करें

खैर, अब आप जावा में सार वर्ग और इंटरफ़ेस के बीच महत्वपूर्ण अंतर हैं। लेकिन, आप कैसे तय करते हैं कि इन दोनों में से किसका उपयोग करना है

इंटरफ़ेस का उपयोग करने के लिए एब्सट्रैक्ट क्लास और कब उपयोग करें?

निम्नलिखित मामलों में अमूर्त कक्षाओं का उपयोग करने पर विचार करें:

  • यदि आपके पास कुछ संबंधित कक्षाएं हैं जिन्हें साझा करने की आवश्यकता है कोड की समान पंक्तियाँ
  • जब आप परिभाषित करना चाहते हैं गैर-स्थिर या गैर-अंतिम फ़ील्ड
  • जब होते हैंविधियाँ या क्षेत्रया आवश्यकता है पहुँच संशोधक जनता के अलावा (जैसे संरक्षित और निजी)

निम्नलिखित मामलों में इंटरफेस का उपयोग करने पर विचार करें:

  • जब आप हासिल करना चाहते हैं शुद्ध अमूर्तता
  • अगर आप नौकरी करना चाहते हैं कई , अर्थात,एक से अधिक इंटरफ़ेस लागू करें
  • जब आप किसी विशेष डेटा प्रकार के व्यवहार को निर्दिष्ट करना चाहते हैं, लेकिन इसके व्यवहार को लागू करने के बारे में चिंतित नहीं हैं।

यह हमें इस लेख के अंत में लाता है। मैंने साक्षात्कार में सबसे अधिक बार पूछे जाने वाले जावा प्रश्नों में से एक को कवर किया है, जो कि जावा में सार वर्ग और इंटरफ़ेस के बीच अंतर है।

सुनिश्चित करें कि आप जितना संभव हो उतना अभ्यास करें और अपने अनुभव को वापस लाएं।

इसकी जाँच पड़ताल करो 250,000 से अधिक संतुष्ट शिक्षार्थियों के एक नेटवर्क के साथ एक विश्वसनीय ऑनलाइन शिक्षण कंपनी, एडुरेका द्वारा, दुनिया भर में फैली हुई है। हम आपकी यात्रा के हर कदम पर आपकी मदद करने के लिए यहां हैं, इस साक्षात्कार साक्षात्कार के अलावा बनने के लिए, हम एक पाठ्यक्रम के साथ आते हैं, जो छात्रों और पेशेवरों के लिए बनाया गया है, जो जावा डेवलपर बनना चाहते हैं।

क्या आप हमसे कोई प्रश्न पूछना चाहते हैं? कृपया इस interface जावा मैप इंटरफेस ’के टिप्पणी अनुभाग में इसका उल्लेख करें लेख और हम जितनी जल्दी हो सके आप को वापस मिल जाएगा।