C# वंशानुक्रम और बहुरूपता कार्यक्रम उदाहरणों के साथ
C# में इनहेरिटेंस क्या है?
विरासत C# की एक महत्वपूर्ण अवधारणा है। वंशानुक्रम एक अवधारणा है जिसमें आप पैरेंट क्लास और चाइल्ड क्लास को परिभाषित करते हैं। चाइल्ड क्लास पैरेंट क्लास के तरीकों और गुणों को विरासत में लेती हैं, लेकिन साथ ही, यदि आवश्यक हो तो वे तरीकों के व्यवहार को भी संशोधित कर सकती हैं। यदि आवश्यक हो तो चाइल्ड क्लास अपने स्वयं के तरीकों को भी परिभाषित कर सकती है।
आइए एक प्रोग्राम उदाहरण द्वारा C# इनहेरिटेंस को बेहतर ढंग से समझें:
C# वंशानुक्रम उदाहरण
आइए अब देखें कि हम अपने कोड में वंशानुक्रम की अवधारणा को कैसे शामिल कर सकते हैं।
चरण 1) पहला कदम हमारे ट्यूटोरियल क्लास के लिए कोड बदलना है। इस चरण में, हम नीचे दिए गए कोड को Tutorial.cs फ़ाइल में जोड़ते हैं।
ध्यान दें कि अब हमें TutorialID और TutorialName दोनों फ़ील्ड में 'protected' एक्सेस संशोधक जोड़ना होगा।
याद रखें कि हमने एक्सेस मॉडिफायर ट्यूटोरियल में इस एक्सेस मॉडिफायर का उल्लेख किया था। खैर यहाँ आप इसके होने का उद्देश्य देख सकते हैं। केवल जब आपके पास यह एक्सेस मॉडिफायर (संरक्षित) होता है, तो चाइल्ड क्लास पैरेंट क्लास के फ़ील्ड का उपयोग करने में सक्षम होता है।
चरण 2) दूसरा चरण हमारी नई चाइल्ड क्लास को जोड़ना है। इस क्लास का नाम होगा “Guru99Tutorial”। इस चरण में, हम नीचे दिए गए कोड को Tutorial.cs फ़ाइल में जोड़ते हैं। यह कोड Tutorial क्लास की परिभाषा के बाद रखा जाना चाहिए।
Code स्पष्टीकरण: -
- पहला कदम है बनाना Guru99Tutorial एक चाइल्ड क्लास है। हमें यह भी बताना होगा कि यह क्लास Tutorial क्लास की चाइल्ड क्लास होगी। यह ':' कीवर्ड द्वारा दर्शाया जाता है।
- इसके बाद, हम RenameTutorial नामक एक विधि को परिभाषित कर रहे हैं। इसका उपयोग TutorialName फ़ील्ड का नाम बदलने के लिए किया जाएगा। यह विधि एक स्ट्रिंग वैरिएबल स्वीकार करती है जिसमें ट्यूटोरियल का नया नाम होता है।
- फिर हमने TutorialName फ़ील्ड को पैरामीटर pNewName निर्दिष्ट किया।
नोट:- यद्यपि हमने “ट्यूटोरियलनेम फ़ील्ड को परिभाषित नहीं किया हैGuru“99Tutorial” क्लास में, हम अभी भी इस फ़ील्ड तक पहुँच सकते हैं। ऐसा इसलिए है क्योंकि “Guru“99Tutorial” ट्यूटोरियल क्लास की चाइल्ड क्लास है। और क्योंकि हमने ट्यूटोरियल क्लास के फ़ील्ड्स को प्रोटेक्टेड बनाया है, इसलिए इस क्लास द्वारा उन्हें एक्सेस किया जा सकता है।
चरण 3) अंतिम चरण में, हमें अपनी मुख्य Program.cs फ़ाइल को संशोधित करना है। अपने कंसोल एप्लिकेशन में, हम इसका एक ऑब्जेक्ट बनाने जा रहे हैं। Guru99Tutorial क्लास। इस ऑब्जेक्ट के साथ, हम RenameTutorial मेथड को कॉल करेंगे। फिर हम GetTutorial मेथड की मदद से TutorialName फ़ील्ड को प्रदर्शित करेंगे।
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
public 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();
}
}
}
Code स्पष्टीकरण: -
- पहला चरण इसके लिए एक ऑब्जेक्ट बनाना है। Guru99Tutorial क्लास। यह 'new' कीवर्ड के माध्यम से किया जाता है। ध्यान दें कि इस बार हम Tutorial क्लास का ऑब्जेक्ट नहीं बना रहे हैं।
- हम RenameTutorial विधि का उपयोग करते हैं Guru99Tutorial क्लास का उपयोग TutorialName फ़ील्ड को बदलने के लिए किया जाता है। हम स्ट्रिंग “.Net” पास करते हैं। Guru99” को RenameTutorial विधि में जोड़ें।
- फिर हम GetTutorial विधि को कॉल करते हैं। ध्यान दें कि यद्यपि यह विधि परिभाषित नहीं है, Guru99Tutorial क्लास में, हम अभी भी इस मेथड को एक्सेस कर सकते हैं। GetTutorial मेथड का आउटपुट फिर Console.WriteLine मेथड के माध्यम से कंसोल पर प्रदर्शित किया जाता है।
यदि उपरोक्त कोड ठीक से दर्ज किया गया है और प्रोग्राम सफलतापूर्वक निष्पादित होता है, तो निम्नलिखित आउटपुट प्रदर्शित होगा।
आउटपुट:
आउटपुट से हम स्पष्ट रूप से देख सकते हैं कि ट्यूटोरियलनेम फ़ील्ड का नाम बदलकर “.Net” कर दिया गया है। Guru99”। यह चाइल्ड क्लास द्वारा कॉल किए गए RenameTutorial मेथड के कारण संभव हुआ।
C# में बहुरूपता क्या है?
बहुरूपता C# में OOPs अवधारणा है जहाँ एक नाम के कई रूप हो सकते हैं। उदाहरण के लिए, आपके पास संचार के लिए एक स्मार्टफोन है। आप जो संचार मोड चुनते हैं वह कुछ भी हो सकता है। यह कॉल, टेक्स्ट मैसेज, पिक्चर मैसेज, मेल आदि हो सकता है। इसलिए, लक्ष्य एक ही है, यानी संचार, लेकिन उनका तरीका अलग है। इसे पॉलीमॉर्फिज्म कहा जाता है।
नीचे दिए गए प्रोग्राम उदाहरण से आपको C# बहुरूपता की बेहतर समझ मिलेगी:
C# बहुरूपता उदाहरण
आइए अब देखें कि हम अपने कोड में बहुरूपता की अवधारणा को कैसे शामिल कर सकते हैं।
चरण 1) पहला कदम हमारे ट्यूटोरियल क्लास के लिए कोड बदलना है। इस चरण में, हम नीचे दिए गए कोड को Tutorial.cs फ़ाइल में जोड़ते हैं।
Code स्पष्टीकरण: -
1 और 2) पहला चरण हमारे पिछले उदाहरणों के समान ही है। हम रख रहे हैंping SetTutorial विधि की परिभाषा यथावत।
3) यह विधि पैरामीटर pID और pName के आधार पर TutorialID और TutorialName सेट करती है।
4) यहाँ हम अपने क्लास में बदलाव करते हैं जिसमें हम SetTutorial के समान नाम के साथ एक नया मेथड जोड़ते हैं। बस इस बार हम केवल एक पैरामीटर पास कर रहे हैं जो pName है। इस मेथड में, हम केवल TutorialName के फील्ड को pName पर सेट कर रहे हैं।
चरण 2) अंतिम चरण में, हमें अपनी मुख्य Program.cs फ़ाइल को संशोधित करना है। अपने कंसोल एप्लिकेशन में, हम इसका एक ऑब्जेक्ट बनाने जा रहे हैं। Guru99ट्यूटोरियल क्लास।
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();
}
}
}
Code स्पष्टीकरण: -
- पहले चरण में, हम 2 पैरामीटर के साथ SetTutorial विधि का उपयोग कर रहे हैं। जहाँ हम इस विधि में TutorialID और TutorialName दोनों को पास कर रहे हैं।
- दूसरे चरण में, हम अब SetTutorial विधि को सिर्फ़ एक पैरामीटर के साथ कॉल कर रहे हैं। हम इस विधि में सिर्फ़ TutorialName पास कर रहे हैं।
यदि उपरोक्त कोड सही तरीके से दर्ज किया गया है और प्रोग्राम चलाया गया है तो निम्न आउटपुट प्रदर्शित होगा। यदि आप ट्यूटोरियल नाम के साथ ट्यूटोरियल आईडी भी प्राप्त करना चाहते हैं, तो आपको नीचे दिए गए चरण का पालन करना चाहिए
- public int GetTutorialID नामक एक अलग विधि बनाएं
- उस विधि में कोड लाइन “return TutorialID” लिखें। इसका उपयोग कॉलिंग प्रोग्राम को TutorialID लौटाने के लिए किया जा सकता है।
आउटपुट:
आउटपुट से, हम स्पष्ट रूप से देख सकते हैं कि दोनों विधियों को सफलतापूर्वक कॉल किया गया था। इस वजह से, स्ट्रिंग्स “पहला ट्यूटोरियल” और “दूसरा ट्यूटोरियल” कंसोल पर भेजे गए थे।
सारांश
- इनहेरिटेंस वह है जहाँ चाइल्ड क्लास पैरेंट क्लास के फ़ील्ड और मेथड को इनहेरिट करता है। चाइल्ड क्लास तब अपने खुद के मेथड भी परिभाषित कर सकता है।
- बहुरूपता C# यह एक OOPs अवधारणा है जहां एक नाम के कई रूप हो सकते हैं।







