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

सॉफ्टवेयर विकास में विरासत का उद्देश्य सुरक्षित और विश्वसनीय सॉफ्टवेयर के पुन: उपयोग को सुविधाजनक बनाना है। वंशानुक्रम का उपयोग करने का एक प्रमुख लाभ यह है कि यह आपके कार्यक्रमों में निरर्थक कोड को समाप्त कर देता है।

कैसे कार्य करता है

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

फलों पर विचार करने के लिए वंशानुक्रम कैसे काम करता है, इसका वास्तविक दुनिया उदाहरण है। यह एक व्यापक लेबल है जो विभिन्न मदों की एक सीमा को घेरने का कार्य करता है।

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

instagram viewer

इस तरह से वंशानुक्रम काम करता है।

जावा में इनहेरिटेंस का उपयोग करना

इनहेरिटेंस का उपयोग किसी भी प्रोग्रामिंग भाषा में किया जा सकता है ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग प्रतिमान. हालाँकि, वंशानुक्रम का उपयोग करने का सटीक तरीका विशिष्ट प्रोग्रामिंग भाषा पर निर्भर है।

उदाहरण के लिए, C ++ भी एक ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग लैंग्वेज है. C ++ समर्थन करता है जिसे एकाधिक वंशानुक्रम के रूप में जाना जाता है, जबकि जावा केवल एकल वंशानुक्रम का समर्थन करता है।

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

जावा में पेरेंट क्लास बनाना

सॉफ्टवेयर आवश्यकताओं के दस्तावेज से मूल वर्ग का चयन करने की प्रक्रिया को वस्तु-उन्मुख विश्लेषण के रूप में जाना जाता है। इस प्रक्रिया के दौरान मुहावरा "अक्सर" का उपयोग संभव विरासत संबंधों की पहचान करने के लिए किया जाता है। ऊपर दिए गए हमारे उदाहरण से आपको यह देखने में सक्षम होना चाहिए कि फल हमारा मूल वर्ग होगा।

फ्रूट पेरेंट क्लास उदाहरण


सार्वजनिक वर्ग फल {
// परिवर्तनीय घोषणा
संरक्षित स्ट्रिंग बीज;
संरक्षित स्ट्रिंग स्किनकलर;
संरक्षित स्ट्रिंग स्वाद;
// डिफ़ॉल्ट निर्माता
सार्वजनिक फल () {
बीज = "";
skinColor = "";
स्वाद = "";
}
// प्राथमिक कंस्ट्रक्टर
सार्वजनिक फल (स्ट्रिंग बीज, स्ट्रिंग स्किनकलर, स्ट्रिंग स्वाद) {
this.seed = seed;
this.skinColor = skinColor;
यह। स्वाद = स्वाद;
}
// गेटर्स एंड सेटर्स
सार्वजनिक स्ट्रिंग getSeed () {
वापसी बीज;
}
सार्वजनिक शून्य सेटसाइड (स्ट्रिंग बीज) {
this.seed = seed;
}
सार्वजनिक स्ट्रिंग getSkinColor () {
वापसी की त्वचा;
}
सार्वजनिक शून्य सेटस्किनकलर (स्ट्रिंग स्किनकलर) {
this.skinColor = skinColor;
}
सार्वजनिक स्ट्रिंग getTaste () {
स्वाद लौटना;
}
सार्वजनिक शून्य सेटटैस्ट (स्ट्रिंग स्वाद) {
यह। स्वाद = स्वाद;
}
// खाने की विधि
सार्वजनिक शून्य खाने () {
एक फल खाने के तरीके पर // सामान्य कोड
}
// रस विधि
सार्वजनिक शून्य रस () {
// फलों को रस देने का सामान्य कोड
}
}

ऊपर माता-पिता वर्ग के सबसे उल्लेखनीय पहलुओं में से एक पहुंच संशोधक है जिसका उपयोग प्रत्येक चर घोषणा के साथ किया जाता है। "संरक्षित" एक्सेस संशोधक मूल कक्षाओं में उपयोग के लिए आदर्श है, क्योंकि यह गैर-बाल वर्गों को माता-पिता वर्ग की डेटा विशेषताओं तक पहुंच प्राप्त करने से रोकता है।

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

जावा में बाल कक्षाएं बनाना

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

हमारे उदाहरण के साथ जारी रखते हुए, आपको यह देखने में सक्षम होना चाहिए कि नारंगी ऊपर फल वर्ग का एक उपयुक्त बच्चा वर्ग क्यों होगा।

ऑरेंज चाइल्ड क्लास उदाहरण


सार्वजनिक वर्ग ऑरेंज फल {
// चर घोषणा
निजी इंट सुप्रीम;
// डिफ़ॉल्ट कंस्ट्रक्टर
सार्वजनिक नारंगी () {
सर्वोच्च = 0;
}
// प्राथमिक निर्माता
सार्वजनिक ऑरेंज (स्ट्रिंग बीज, स्ट्रिंग स्किनकलर, स्ट्रिंग स्वाद, इंट सुप्रीम) {
सुपर (बीज, त्वचा का रंग, स्वाद);
this.supremes = supremes;
}
// गेटर्स एंड सेटर्स
सार्वजनिक int getupremes () {
वापसी के सर्वोच्च;
}
सार्वजनिक शून्य सेटअप्रेम (इंट सुप्रीम) {
this.supremes = supremes;
}
// खाने की विधि
सार्वजनिक शून्य खाने () {
// संतरे कैसे खाए
}
// रस विधि
सार्वजनिक शून्य रस () {
// रस और नारंगी कैसे
}
// छिलका विधि
सार्वजनिक शून्य छिलका () {
// संतरे को कैसे छीलें
}
}

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

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

हमारे नारंगी वर्ग ने जो अद्वितीय विशेषता पहचानी है, वह चर नाम सर्वोच्च के साथ पहचानी जाती है (जो संतरे में पाए जाने वाले छोटे खंडों के लिए आधिकारिक नाम है)। यह वह जगह है जहाँ विशेषज्ञता खेलने में आती है; सभी फलों में सर्वोच्चता नहीं होती है लेकिन सभी संतरे होते हैं, इसलिए नारंगी वर्ग के लिए सर्वोच्च चर को जमा करना तर्कसंगत है।

पहले से मौजूद "खा" और "रस" के तरीकों के लिए "छील" विधि को जोड़ना भी तर्कसंगत है, क्योंकि सभी फलों को छील नहीं किया जा सकता है, संतरे अक्सर छील दिए जाते हैं।

आपको यह ध्यान में रखना चाहिए कि यदि हम मौजूदा "खाने" और "रस" तरीकों को बदलने का इरादा नहीं रखते हैं, तो हमें उन्हें अपने नारंगी वर्ग में शामिल करने की आवश्यकता नहीं होगी। नारंगी वर्ग की विधियाँ फल वर्ग में किसी भी समान विधि को ओवरराइड करती हैं। इसलिए अगर सभी फलों को एक ही तरह से खाया और जूस दिया जाए, तो हमें ऑरेंज क्लास में ये तरीके बनाने की जरूरत नहीं होगी।

भूमिका निर्माता इनहेरिटेंस में खेलते हैं

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

हमारे उदाहरण पर वापस जाते हुए, हर बार एक नई नारंगी वस्तु बनाई जाती है एक फल वस्तु भी बनाई जाती है क्योंकि एक नारंगी एक फल है।

दृश्यों के पीछे, जब एक चाइल्ड क्लास ऑब्जेक्ट बनाया जाता है, तो पैरेंट क्लास के कंस्ट्रक्टर को पहले चाइल्ड क्लास के कंस्ट्रक्टर द्वारा बुलाया जाता है। ऊपर दिए गए हमारे नारंगी बच्चे वर्ग में, यदि कोई नारंगी वस्तु किसी भी पैरामीटर के बिना बनाई गई है तो हमारे डिफ़ॉल्ट फल वर्ग निर्माता को बुलाया जाएगा, उसके बाद हमारे डिफ़ॉल्ट नारंगी वर्ग ठेकेदार।

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

अब आप जावा में इनहेरिटेंस का उपयोग कर सकते हैं

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

छवि क्रेडिट: एंड्रियास वोल्फहार्ट /पेक्सल्स

ईमेल
कैसे अपने ऑब्जेक्ट-ओरिएंटेड कोड को विरासत के साथ व्यवस्थित करें

ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग सही होने का मतलब है कि आपको वंशानुक्रम के बारे में जानना होगा और यह कोडिंग को कैसे सरल बना सकता है और त्रुटियों को कम कर सकता है।

आगे पढ़िए

संबंधित विषय
  • प्रोग्रामिंग
  • जावा
  • वस्तु उन्मुख कार्यकर्म
लेखक के बारे में
कादिशा कीन (3 लेख प्रकाशित)

कादिशा कीन एक फुल-स्टैक सॉफ्टवेयर डेवलपर और तकनीकी / प्रौद्योगिकी लेखक हैं। वह सबसे जटिल तकनीकी अवधारणाओं में से कुछ को सरल बनाने की विशिष्ट क्षमता है; उत्पादन सामग्री जिसे किसी भी तकनीक नौसिखिए द्वारा आसानी से समझा जा सकता है। वह लेखन के बारे में भावुक है, दिलचस्प सॉफ्टवेयर विकसित कर रहा है, और दुनिया की यात्रा (वृत्तचित्रों के माध्यम से)।

कादिशा कीन से अधिक

हमारे न्यूज़लेटर की सदस्यता लें

टेक टिप्स, रिव्यू, फ्री ईबुक और एक्सक्लूसिव डील्स के लिए हमारे न्यूज़लेटर से जुड़ें!

एक और कदम…!

कृपया हमें आपके द्वारा भेजे गए ईमेल में अपने ईमेल पते की पुष्टि करें।

.