उदाहरण के साथ जावा OOPs में निहित

विषय - सूची:

Anonim

वंशानुक्रम क्या है?

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

इस ट्यूटोरियल में, आप सीखेंगे-

  • वंशानुक्रम के प्रकार
  • जावा में निहित
  • जावा वंशानुक्रम उदाहरण
  • सुपर कीवर्ड
  • उदाहरण के लिए OOP के साथ विरासत में जानें

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

जावा में विभिन्न प्रकार की विरासत हैं:

एकल वंशानुक्रम:

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

एकल वंशानुक्रम

ऊपर दिए गए आरेख में, क्लास बी का विस्तार केवल क्लास ए क्लास ए सुपर क्लास है और क्लास बी एक सब-क्लास है।

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

मल्टीपल इनहेरिटेंस में, एक वर्ग एक से अधिक कक्षाओं का विस्तार करता है। जावा कई विरासत का समर्थन नहीं करता है।

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

आरेख के अनुसार, क्लास सी क्लास ए और क्लास बी दोनों का विस्तार करता है।

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

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

मल्टीलेवल इनहेरिटेंस

जैसा कि चित्र में दिखाया गया है वर्ग C, B का उपवर्ग है और B उपवर्ग वर्ग A का है।

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

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

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

उपरोक्त उदाहरण के अनुसार, क्लास बी, सी, और डी एक ही वर्ग ए को विरासत में मिला है।

हाइब्रिड वंशानुक्रम:

हाइब्रिड इनहेरिटेंस सिंगल और मल्टीपल इनहेरिटेंस का संयोजन है।

हाइब्रिड वंशानुक्रम

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

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

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

जावा इंश्योरेंस एक ऐसा तंत्र है जिसमें एक वर्ग दूसरे वर्ग की संपत्ति प्राप्त करता है। जावा में, जब "Is-A" संबंध दो वर्गों के बीच होता है, हम Inheritance का उपयोग करते हैं। मूल वर्ग को सुपर क्लास कहा जाता है और विरासत में मिली क्लास को उपवर्ग कहा जाता है। कीवर्ड

extends सुपर क्लास की विशेषताओं को प्राप्त करने के लिए उप वर्ग द्वारा उपयोग किया जाता है।

वंशानुक्रम महत्वपूर्ण है क्योंकि यह कोड की पुन: प्रयोज्यता की ओर जाता है।

जावा वंशानुक्रम सिंटैक्स:

class subClass extends superClass{//methods and fields}

जावा वंशानुक्रम उदाहरण

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();}}

सुपर कीवर्ड

सुपर कीवर्ड "यह" कीवर्ड के समान है।

कीवर्ड सुपर का उपयोग मूल वर्ग के किसी भी डेटा सदस्य या विधियों तक पहुंचने के लिए किया जा सकता है।

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

वाक्य - विन्यास:

super.();

उदाहरण के लिए OOP के साथ विरासत में जानें

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

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

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

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

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

OOP का दृष्टिकोण : OOPs प्रोग्रामिंग दृष्टिकोण का उपयोग करते समय। हम दो कक्षाएं बनाएंगे।

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

सॉफ़्टवेयर में अनुरोध बदलें

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

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

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

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

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

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

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

इसलिए भले ही संरचनात्मक प्रोग्रामिंग शुरू में एक आसान दृष्टिकोण की तरह लगता है, ओओपी एक लंबी अवधि में जीतता है।

ओओपी में विरासत का लाभ

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

इसे दूर करने के लिए, आप एक मूल वर्ग बनाते हैं, "खाता" कहते हैं और जमा और निकासी के समान कार्य को लागू करते हैं। और बाल वर्गों को विरासत में मिला "खाता" वर्ग बनाएं। ताकि उनके पास खाता कक्षा में निकासी और कार्यों को जमा करने की सुविधा होगी।

कार्यों को व्यक्तिगत रूप से लागू करने की आवश्यकता नहीं है। यह जावा में निहित है।