जावा में इनहेरिटेंस और इंटरफेस के बीच अंतर

विषयसूची:

जावा में इनहेरिटेंस और इंटरफेस के बीच अंतर
जावा में इनहेरिटेंस और इंटरफेस के बीच अंतर

वीडियो: जावा में इनहेरिटेंस और इंटरफेस के बीच अंतर

वीडियो: जावा में इनहेरिटेंस और इंटरफेस के बीच अंतर
वीडियो: Interface in Java in Hindi example | Multiple Inheritance | Difference between interface and class 2024, जुलाई
Anonim

मुख्य अंतर - जावा में विरासत बनाम इंटरफ़ेस

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

जावा में इनहेरिटेंस क्या है?

विरासत कोड पुन: प्रयोज्य प्राप्त कर सकता है। वंशानुक्रम मौजूदा वर्ग की विशेषताओं और विधियों का पुन: उपयोग करने में मदद करता है। पुराने वर्ग का उपयोग करके नए वर्ग को प्राप्त करने के तंत्र को वंशानुक्रम कहा जाता है। पुराने वर्ग को मूल वर्ग या सुपर क्लास के रूप में जाना जाता है। व्युत्पन्न वर्ग को चाइल्ड क्लास या उपवर्ग कहा जाता है।

जावा इनहेरिटेंस का सिंटैक्स इस प्रकार है।

वर्ग उपवर्ग_नाम सुपरक्लास_नाम बढ़ाता है {

परिवर्तनीय घोषणा;

विधि घोषणा;

}

निम्नलिखित उदाहरण का उपयोग करके वंशानुक्रम अवधारणा को समझाया जा सकता है। मान लें कि ए नामक एक वर्ग इस प्रकार है।

पब्लिक क्लास ए{

सार्वजनिक शून्य राशि (){

System.out.println(“Sum”);

}

}

यदि हम मौजूदा वर्ग को बदले बिना कोई नई विधि जोड़ना चाहते हैं, तो हम इसे निम्नानुसार कर सकते हैं।

पब्लिक क्लास बी{

सार्वजनिक शून्य उप (){

System.out.println(“सब”);

}

}

प्रोग्रामर इनहेरिटेंस का उपयोग क्लास ए सम () का उपयोग करने के लिए कर सकता है।

सार्वजनिक वर्ग बी कक्षा ए बढ़ाता है{

सार्वजनिक शून्य उप (){

System.out.println(“सब”);

}

}

मुख्य समारोह में, बी का एक ऑब्जेक्ट बनाना और उप () को कॉल करना संभव है, जो कक्षा बी और योग () से संबंधित है, जो विरासत का उपयोग करके कक्षा ए से संबंधित है।

सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग args) {

बी ओबीजे=नया बी ();

obj.sub();

obj.sum ();

}

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

जावा में वंशानुक्रम और इंटरफ़ेस के बीच अंतर
जावा में वंशानुक्रम और इंटरफ़ेस के बीच अंतर

चित्र 01: वंशानुक्रम

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

जावा में इंटरफेस क्या है?

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

सार कक्षा ए{

अमूर्त शून्य राशि ();

}

मान लें कि ए और बी के रूप में दो अमूर्त वर्ग हैं। ए और बी के अमूर्त तरीकों को लागू करने के लिए, एक नया वर्ग सी बनाया गया है। फिर कक्षा सी को ए और बी दोनों का विस्तार करना चाहिए, लेकिन जावा में एकाधिक विरासत समर्थित नहीं है। इसलिए, इंटरफेस का उपयोग करना चाहिए। विधियों को घोषित करने के लिए इंटरफेस का उपयोग किया जा सकता है, लेकिन विधियों को परिभाषित करना संभव नहीं है। इंटरफेस का उपयोग करके ऑब्जेक्ट बनाना संभव नहीं है।कक्षा सी को इंटरफ़ेस ए और बी में सभी विधियों को लागू करना चाहिए।

इंटरफ़ेस ए{

शून्य राशि ();

}

इंटरफ़ेस बी{

शून्य उप ();

}

वर्ग सी ए, बी लागू करता है{

सार्वजनिक शून्य राशि (){

System.out.println(“सारांश”);

}

सार्वजनिक शून्य उप (){

System.out.println(“घटाव”);

}

}

अब, मुख्य कार्यक्रम में C का ऑब्जेक्ट बनाना और दोनों विधियों को कॉल करना संभव है।

सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग args) {

सी ओबीजे=नया सी ();

obj.sum ();

obj.sub();

}

तो, इंटरफेस एकाधिक विरासत को लागू करने के लिए उपयोग कर सकते हैं।

इंटरफेस का एक और उपयोग यह है कि यह सुरक्षा प्रदान करता है। नीचे दिए गए कोड को देखें।

इंटरफ़ेस ए {

शून्य योग ();

}

वर्ग बी ए लागू करता है {

सार्वजनिक शून्य राशि () {

System.out.println(“सारांश”);

}

सार्वजनिक शून्य गुणा () {

System.out.println(“गुणा”);

}

}

बी का ऑब्जेक्ट बनाते समय, दोनों विधियों को योग () और गुणा () करना संभव है। यदि प्रोग्रामर गुणा () फ़ंक्शन का उपयोग करके प्रतिबंधित करना चाहता है, तो यह निम्नानुसार संभव है।

सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग args) {

ए ओब्ज=नया बी ();

obj.sum ();

}

ए ओब्ज=नया बी (); एक वस्तु बनाएगा। यह ए प्रकार का है और स्मृति को बी के रूप में आवंटित किया गया है। योग() को कॉल करना संभव है लेकिन गुणा() निष्पादित नहीं कर सकता है। यह प्रतिबंध इंटरफेस का उपयोग करके किया जाता है।

जावा में इनहेरिटेंस और इंटरफेस के बीच समानताएं क्या हैं?

  • दोनों अवधारणाएं ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग से संबंधित हैं
  • दोनों IS-A संबंध का प्रतिनिधित्व करते हैं।

जावा में इनहेरिटेंस और इंटरफेस में क्या अंतर है?

जावा में विरासत बनाम इंटरफ़ेस

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

सारांश - जावा में विरासत बनाम इंटरफ़ेस

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

जावा में इनहेरिटेंस बनाम इंटरफेस का पीडीएफ संस्करण डाउनलोड करें

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

सिफारिश की: