इस ट्यूटोरियल में, आप सीखेंगे-
- विरासत
- बहुरूपता
C # में इनहेरिटेंस क्या है?
C # में इनहेरिटेंस एक महत्वपूर्ण अवधारणा है। वंशानुक्रम एक अवधारणा है जिसमें आप अभिभावक वर्ग और बाल वर्ग को परिभाषित करते हैं।
बच्चे की कक्षाएं अभिभावक वर्ग के तरीकों और गुणों को विरासत में देती हैं, लेकिन साथ ही, यदि आवश्यक हो तो वे तरीकों के व्यवहार को भी संशोधित कर सकते हैं। यदि आवश्यक हो तो बाल वर्ग स्वयं के तरीकों को भी परिभाषित कर सकता है।
यदि हम इस क्रिया को देखेंगे तो आपको बेहतर समझ प्राप्त होगी।
आइए अब देखें कि हम अपने कोड में विरासत की अवधारणा को कैसे शामिल कर सकते हैं।
चरण 1) पहला चरण हमारे ट्यूटोरियल वर्ग के लिए कोड को बदलना है। इस चरण में, हम नीचे दिए गए कोड को Tutorial.cs फ़ाइल में जोड़ते हैं।
ध्यान दें कि हमें अब TutorialID और TutorialName फ़ील्ड दोनों में 'संरक्षित' के एक्सेस मॉडिफायर को जोड़ना होगा।
याद रखें कि हमने एक्सेस मॉडिफायर ट्यूटोरियल में इस एक्सेस मॉडिफायर का उल्लेख किया था। खैर यहाँ आप इस होने का उद्देश्य देख सकते हैं। जब आपके पास यह एक्सेस संशोधक (संरक्षित) होता है, तो चाइल्ड क्लास पैरेंट क्लास के क्षेत्रों का उपयोग करने में सक्षम होती है।
चरण 2) दूसरा कदम हमारी नई बाल कक्षा को जोड़ना है। इस वर्ग का नाम "Guru99Tutorial" होगा। इस चरण में, हम नीचे दिए गए कोड को Tutorial.cs फ़ाइल में जोड़ते हैं। ट्यूटोरियल क्लास की परिभाषा के बाद कोड को रखा जाना चाहिए।
कोड स्पष्टीकरण: -
- पहला कदम है, गुरु99 टॉइलट चाइल्ड क्लास बनाना। हमें यह भी उल्लेख करने की आवश्यकता है कि यह वर्ग ट्यूटोरियल क्लास का एक बच्चा वर्ग होने जा रहा है। यह ':' कीवर्ड द्वारा किया जाता है।
- अगला, हम एक विधि का नाम परिभाषित कर रहे हैं जिसे RenameTutorial कहा जाता है। यह TutorialName फ़ील्ड का नाम बदलने के लिए उपयोग किया जाएगा। यह विधि एक स्ट्रिंग चर को स्वीकार करती है जिसमें ट्यूटोरियल का नया नाम है।
- फिर हमने TutorialName फ़ील्ड में पैरामीटर pNewName असाइन किया।
नोट : - भले ही हमने "Guru99Tutorial" क्लास में TutorialName फील्ड को परिभाषित नहीं किया है, फिर भी हम इस फील्ड को एक्सेस करने में सक्षम हैं। यह इस तथ्य के कारण है कि "Guru99Tutorial" ट्यूटोरियल क्लास का एक बच्चा वर्ग है। और क्योंकि हमने ट्यूटोरियल क्लास के फ़ील्ड्स को संरक्षित किया है, उन्हें इस क्लास द्वारा एक्सेस किया जा सकता है।
चरण 3) अंतिम चरण हमारी मुख्य Program.cs फ़ाइल को संशोधित करना है। हमारे कंसोल एप्लिकेशन में, हम गुरु 99Tutorial क्लास की एक वस्तु बनाने जा रहे हैं। इस ऑब्जेक्ट के साथ, हम RenameTutorial विधि को कॉल करने जा रहे हैं। हम तब गेटटाइपर्स विधि की मदद से TutorialName फ़ील्ड प्रदर्शित करने जा रहे हैं।
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace DemoApplication{class Tutorial{protected int TutorialID;protected string TutorialName;public void SetTutorial(int pID,string pName){TutorialID=pID;TutorialName=pName;}public String GetTutorial(){return TutorialName;}}public class Guru99Tutorial:Tutorial{public void RenameTutorial(String pNewName){TutorialName=pNewName;}static void Main(string[] args){Guru99Tutorial pTutor=new Guru99Tutorial();pTutor.RenameTutorial(".Net by Guru99");Console.WriteLine(pTutor.GetTutorial());Console.ReadKey();}}}
कोड स्पष्टीकरण: -
- पहला कदम है गुरु99Tutorial क्लास के लिए ऑब्जेक्ट बनाना। यह 'नए' कीवर्ड के माध्यम से किया जाता है। ध्यान दें कि इस बार हम ट्यूटोरियल क्लास का ऑब्जेक्ट नहीं बना रहे हैं।
- हम TutorialName फ़ील्ड को बदलने के लिए Guru99Tutorial क्लास के RenameTutorial विधि का उपयोग करते हैं। हम RenameTutorial विधि के लिए "गुरु .99 द्वारा .Net" पास करते हैं।
- हम तो गेटटाइपर विधि कहते हैं। ध्यान दें कि भले ही इस विधि को गुरु 99 टॉपर क्लास में परिभाषित नहीं किया गया है, फिर भी हम इस विधि का उपयोग करने में सक्षम हैं। GetTutorial विधि का आउटपुट कंसोल को कंसोल के माध्यम से प्रदर्शित किया जाता है।
यदि उपरोक्त कोड ठीक से दर्ज किया गया है और कार्यक्रम सफलतापूर्वक निष्पादित किया गया है, तो निम्न आउटपुट प्रदर्शित किया जाएगा।
आउटपुट:
आउटपुट से, हम स्पष्ट रूप से देख सकते हैं कि TutorialName फ़ील्ड का नाम बदलकर ".net by Guru99" कर दिया गया था। यह चाइल्ड क्लास द्वारा नामांकित रेनेमटेपर्स विधि से संभव हुआ।
C # में बहुरूपता क्या है?
बहुरूपता एक ओओपी अवधारणा है जहां एक नाम के कई रूप हो सकते हैं।
उदाहरण के लिए, आपके पास संचार के लिए एक स्मार्टफोन है। आपके द्वारा चुना गया संचार मोड कुछ भी हो सकता है। यह एक कॉल, एक पाठ संदेश, एक तस्वीर संदेश, मेल आदि हो सकता है। इसलिए, लक्ष्य आम है जो संचार है, लेकिन उनका दृष्टिकोण अलग है। इसे बहुरूपता कहा जाता है।
यदि हम इस क्रिया को देखेंगे तो आपको बेहतर समझ प्राप्त होगी।
आइए अब देखते हैं, हम अपने कोड में पॉलीमॉर्फिज़्म की अवधारणा को कैसे शामिल कर सकते हैं।
चरण 1) पहला चरण हमारे ट्यूटोरियल वर्ग के लिए कोड को बदलना है। इस चरण में, हम नीचे दिए गए कोड को Tutorial.cs फ़ाइल में जोड़ते हैं।
कोड स्पष्टीकरण: -
1 और 2) पहला चरण हमारे पहले उदाहरणों के समान है। हम सेटटाइपर विधि की परिभाषा को वैसा ही रख रहे हैं जैसा कि यह है।
3) इस विधि के लिए मानक पीआईडी और pName के आधार पर TutorialID और TutorialName सेट किया गया है।
4) यह वह जगह है जहाँ हम अपनी कक्षा में बदलाव करते हैं जिसमें हम SetTutorial के समान नाम के साथ एक नई विधि जोड़ते हैं। केवल इस बार हम केवल एक पैरामीटर पास कर रहे हैं जो कि pName है। इस विधि में, हम अभी ट्यूटोरियलनाम के क्षेत्र को pName में सेट कर रहे हैं।
चरण 2) अंतिम चरण हमारी मुख्य Program.cs फ़ाइल को संशोधित करना है। हमारे कंसोल एप्लिकेशन में, हम गुरु 99Tutorial क्लास की एक वस्तु बनाने जा रहे हैं।
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace DemoApplication{class Tutorial{public int TutorialID;public string TutorialName;public void SetTutorial(int pID,string pName){TutorialID=pID;TutorialName=pName;}public void SetTutorial(string pName){TutorialName=pName;}public String GetTutorial(){return TutorialName;}static void Main(string[] args){Tutorial pTutor=new Tutorial();pTutor.SetTutorial(1,"First Tutorial");Console.WriteLine(pTutor.GetTutorial());pTutor.SetTutorial("Second Tutorial");Console.WriteLine(pTutor.GetTutorial());Console.ReadKey();}}}
कोड स्पष्टीकरण: -
- पहले चरण में, हम 2 मापदंडों के साथ SetTutorial विधि का उपयोग कर रहे हैं। जहाँ हम इस विधि से TutorialID और TutorialName दोनों को पास कर रहे हैं।
- दूसरे चरण में, हम अब SetTutorial विधि को केवल एक पैरामीटर के साथ कॉल कर रहे हैं। हम अभी इस विधि के लिए ट्यूटोरियलनाम पास कर रहे हैं।
यदि उपरोक्त कोड ठीक से दर्ज किया गया है और प्रोग्राम चलाया जाता है तो निम्न आउटपुट प्रदर्शित किया जाएगा। यदि मामले में आप ट्यूटोरियल नाम के साथ-साथ ट्यूटोरियल आईडी भी लाना चाहते हैं, तो आपको नीचे दिए गए चरण का पालन करना चाहिए
- सार्वजनिक int GetTutorialID नामक एक अलग विधि बनाएँ
- उस पद्धति में कोड लाइन "वापसी ट्यूटोरियल" लिखें। इसका उपयोग ट्यूटोरियलआईडी को कॉलिंग प्रोग्राम में वापस करने के लिए किया जा सकता है।
आउटपुट:
आउटपुट से, हम स्पष्ट रूप से देख सकते हैं कि दोनों तरीकों को सफलतापूर्वक बुलाया गया था। इस वजह से, स्ट्रिंग्स "फर्स्ट ट्यूटोरियल" और "सेकंड ट्यूटोरियल" कंसोल को भेजे गए थे।
सारांश
- वंशानुक्रम वह जगह है जहां एक बच्चा वर्ग माता-पिता वर्ग के क्षेत्रों और विधियों को विरासत में लेता है। बाल वर्ग तब अपनी विधियों को भी परिभाषित कर सकता है।
- बहुरूपता एक ओओपी अवधारणा है जहां एक नाम के कई रूप हो सकते हैं।