विरासत Java (उदाहरण सहित)

विरासत क्या है?

विरासत एक तंत्र है जिसमें एक वर्ग दूसरे वर्ग की संपत्ति प्राप्त करता है। उदाहरण के लिए, एक बच्चा अपने माता-पिता के गुणों को विरासत में प्राप्त करता है। विरासत के साथ, हम मौजूदा वर्ग के फ़ील्ड और विधियों का पुनः उपयोग कर सकते हैं। इसलिए, विरासत पुन: प्रयोज्यता की सुविधा प्रदान करती है और यह OOPs की एक महत्वपूर्ण अवधारणा है।

उत्तराधिकार क्या है? Java?

Java विरासत एक तंत्र है जिसमें एक वर्ग दूसरे वर्ग की संपत्ति अर्जित करता है। Javaजब दो क्लास के बीच “Is-A” संबंध होता है, तो हम इनहेरिटेंस का उपयोग करते हैं। पैरेंट क्लास को सुपर क्लास कहा जाता है और इनहेरिटेड क्लास को सबक्लास कहा जाता है। कीवर्ड extends उपवर्ग द्वारा सुपरक्लास की विशेषताओं को इनहेरिट करने के लिए उपयोग किया जाता है। इनहेरिटेंस महत्वपूर्ण है क्योंकि यह कोड की पुनः प्रयोज्यता की ओर ले जाता है।

Java वंशानुक्रम वाक्यविन्यास:

class subClass extends superClass  
{  
   //methods and fields  
} 

वंशानुक्रम के प्रकार Java

यहाँ विभिन्न प्रकार की विरासत दी गई है Java:

  1. एकल वंशानुक्रम
  2. एकाधिक वंशानुक्रम
  3. मल्टीलेवल इनहेरिटेंस
  4. पदानुक्रमित वंशानुक्रम
  5. संकर वंशानुक्रम

1. एकल उत्तराधिकार:

एकल वंशानुक्रम में एक वर्ग दूसरे वर्ग (केवल एक वर्ग) का विस्तार करता है।

एकल उत्तराधिकार Java
एकल वंशानुक्रम

उपरोक्त चित्र में, वर्ग B केवल वर्ग A का विस्तार करता है। वर्ग A एक सुपर क्लास है और वर्ग B एक उप-वर्ग है।

2. बहुविध वंशानुक्रम:

बहुविध वंशानुक्रम एक प्रकार का वंशानुक्रम है। Java प्रकार जहां एक वर्ग एक से अधिक वर्गों का विस्तार करता है। Java एकाधिक विरासत का समर्थन नहीं करता है.

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

उपरोक्त चित्र के अनुसार, वर्ग C, वर्ग A और वर्ग B दोनों का विस्तार करता है।

3. बहुस्तरीय विरासत:

मल्टीलेवल इनहेरिटेंस में, एक क्लास एक व्युत्पन्न क्लास से इनहेरिट कर सकता है। इसलिए, व्युत्पन्न क्लास नए क्लास के लिए आधार क्लास बन जाता है।

बहुस्तरीय विरासत Java
मल्टीलेवल इनहेरिटेंस

चित्र में दिखाए अनुसार वर्ग C, वर्ग B का उपवर्ग है तथा B, वर्ग A का उपवर्ग है।

4. पदानुक्रमिक विरासत:

पदानुक्रमिक वंशानुक्रम में, एक वर्ग को कई उपवर्गों द्वारा विरासत में प्राप्त किया जाता है।


पदानुक्रमिक विरासत Java
पदानुक्रमित वंशानुक्रम

उपरोक्त उदाहरण के अनुसार, वर्ग B, C और D को समान वर्ग A विरासत में मिलता है।

5. संकर वंशानुक्रम:

हाइब्रिड वंशानुक्रम वंशानुक्रम के प्रकारों में से एक है Java जो एकल और बहुविध वंशानुक्रम का संयोजन है।


संकर वंशानुक्रम
संकर वंशानुक्रम

उपरोक्त उदाहरण के अनुसार, वर्ग A के सभी सार्वजनिक और संरक्षित सदस्य वर्ग D में स्थानांतरित होते हैं, पहले वर्ग B के माध्यम से और फिर वर्ग C के माध्यम से।

नोट: Java हाइब्रिड/मल्टीपल इनहेरिटेंस का समर्थन नहीं करता

विरासत Java उदाहरण

यहाँ विरासत का एक उदाहरण दिया गया है Java:


इसका उदाहरण Java विरासत
Java विरासत का उदाहरण

class Doctor {
 void Doctor_Details() {
  System.out.println("Doctor Details...");
 }
}

class Surgeon extends Doctor {
 void Surgeon_Details() {
  System.out.println("Surgen Detail...");
 }
}

public class Hospital {
 public static void main(String args[]) {
  Surgeon s = new Surgeon();
  s.Doctor_Details();
  s.Surgeon_Details();
 }
}

सुपर कीवर्ड

सुपर कीवर्ड “this” कीवर्ड के समान है। सुपर कीवर्ड का उपयोग पैरेंट क्लास के किसी भी डेटा सदस्य या विधियों तक पहुँचने के लिए किया जा सकता है। सुपर कीवर्ड का उपयोग यहाँ किया जा सकता है परिवर्तनशील, विधि और निर्माता स्तर.

सिंटेक्स:

super.<method-name>();

यह भी जांचें: - इस कीवर्ड में Java: क्या है और इसका उपयोग कैसे करें उदाहरण के साथ

उदाहरण के साथ OOP में इनहेरिटेंस सीखें

उसी बैंकिंग एप्लिकेशन पर विचार करें पिछला उदाहरण.

हमें दो अलग-अलग प्रकार के खाते खोलने हैं, एक बचत के लिए और दूसरा चेकिंग (जिसे चालू खाता भी कहा जाता है)।

OOP में वंशानुक्रम

आइए तुलना करें और अध्ययन करें कि हम कोडिंग को किस प्रकार से अपना सकते हैं संरचित और ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग परिप्रेक्ष्य।

संरचनात्मक दृष्टिकोणसंरचित प्रोग्रामिंग में, हम दो फ़ंक्शन बनाएंगे –

  1. एक वापस लेने के लिए
  2. और दूसरा जमा कार्रवाई के लिए।

चूंकि इन कार्यों की कार्यप्रणाली सभी खातों में समान रहती है।

OOP में विरासत

ओ.ओ.पी. का दृष्टिकोण: का उपयोग करते समय उफ़ प्रोग्रामिंग दृष्टिकोण। हम दो वर्ग बनाएंगे।

  • प्रत्येक में जमा और निकासी कार्यों का कार्यान्वयन है।
  • इससे अतिरिक्त काम बेकार हो जाएगा।

OOP में विरासत

सॉफ़्टवेयर में परिवर्तन अनुरोध

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

सॉफ़्टवेयर में परिवर्तन अनुरोध

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

सॉफ़्टवेयर में परिवर्तन अनुरोध

ओ.ओ.पी. का दृष्टिकोण: OOP के दृष्टिकोण का उपयोग करते हुए, आपको केवल एक नया क्लास लिखना होगा जिसमें विड्रॉ फ़ंक्शन का अद्वितीय कार्यान्वयन हो। हमने कोड के परीक्षण किए गए भाग को कभी नहीं छुआ।

सॉफ़्टवेयर में परिवर्तन अनुरोध

एक और परिवर्तन अनुरोध

अगर आवश्यकता में और बदलाव होता है तो क्या होगा? जमाराशि की अपनी अनूठी आवश्यकता के साथ क्रेडिट कार्ड खाता जोड़ना पसंद करें.

सॉफ़्टवेयर आवश्यकता में एकाधिक परिवर्तन अनुरोध

संरचनात्मक दृष्टिकोण: संरचनात्मक दृष्टिकोण का उपयोग करते हुए आपको जमा कोड के परीक्षण किए गए भाग को फिर से बदलना होगा।

सॉफ्टवेयर में बहु-परिवर्तन अनुरोध के लिए संरचनात्मक दृष्टिकोण

ओ.ओ.पी. का दृष्टिकोण: लेकिन ऑब्जेक्ट-ओरिएंटेड दृष्टिकोण का उपयोग करके, आप केवल डिपॉजिट विधि के अपने अनूठे कार्यान्वयन के साथ एक नया वर्ग बनाएंगे (नीचे की छवि में लाल रंग से हाइलाइट किया गया है)। इसलिए भले ही संरचनात्मक प्रोग्रामिंग शुरू में एक आसान दृष्टिकोण की तरह लगता है, लेकिन OOP लंबे समय में जीतता है।

एकाधिक परिवर्तन अनुरोध के प्रति OOP का दृष्टिकोण

OOPs में वंशानुक्रम के लाभ

लेकिन कोई यह तर्क दे सकता है कि सभी वर्गों में, आपके पास कोड के दोहराए गए टुकड़े हैं।

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

OOPs में वंशानुक्रम के लाभ

OOPs में वंशानुक्रम के लाभ

इस पोस्ट को संक्षेप में इस प्रकार लिखें: