C# में इनहेरिटेंस (विरासत)
इनहेरिटेंस एक मैकेनिज्म है जहां एक **डेराइव्ड क्लास** (चाइल्ड) **बेस क्लास** (पैरेंट) के मेंबर्स (फील्ड्स, मेथड्स, प्रॉपर्टीज) प्राप्त करती है। यह कोड पुन: उपयोग, एक्सटेंसिबिलिटी और पॉलीमॉर्फिज्म को सक्षम करता है।
मुख्य अवधारणाएं
- सिंगल इनहेरिटेंस: एक क्लास केवल **एक** बेस क्लास से इनहेरिट कर सकती है।
- मल्टीपल इंटरफेस इम्प्लीमेंटेशन: एक क्लास कई इंटरफेसेस इम्प्लीमेंट कर सकती है।
- एक्सेस मॉडिफायर्स:
public,protected,internal,protected internal,private protectedमेंबर्स इनहेरिट होते हैं;privateनहीं। - कंस्ट्रक्टर्स इनहेरिट नहीं होते लेकिन डेराइव्ड कंस्ट्रक्टर
base()से बेस कंस्ट्रक्टर कॉल करता है।
सिंटैक्स
class DerivedClass : BaseClass {
// डेराइव्ड क्लास मेंबर्स
}
उदाहरण: Shape बेस क्लास और Rectangle डेराइव्ड क्लास
using System;
namespace InheritanceDemo {
// बेस क्लास
class Shape {
protected int Width;
protected int Height;
public void SetWidth(int w) => Width = w;
public void SetHeight(int h) => Height = h;
}
// डेराइव्ड क्लास
class Rectangle : Shape {
public int GetArea() => Width * Height;
}
class Program {
static void Main() {
Rectangle rect = new Rectangle();
rect.SetWidth(5);
rect.SetHeight(7);
Console.WriteLine($"Total area: {rect.GetArea()}"); // 35
}
}
}
आउटपुट
Total area: 35
महत्वपूर्ण कीवर्ड्स
| कीवर्ड | उपयोग |
|---|---|
virtual | बेस मेथड जिसे ओवरराइड किया जा सकता है |
override | डेराइव्ड क्लास में नया कार्यान्वयन |
abstract | बेस क्लास/मेथड जिसे इंस्टेंशिएट/इम्प्लीमेंट करना जरूरी |
sealed | क्लास को इनहेरिट होने से रोकता है / मेथड को आगे ओवरराइड होने से रोकता है |
base | बेस क्लास मेंबर्स एक्सेस करने के लिए |
new | बेस मेंबर छुपाता है (हाइडिंग), ओवरराइड नहीं |
वर्चुअल/ओवरराइड उदाहरण
class Animal {
public virtual void Speak() => Console.WriteLine("Animal sound");
}
class Dog : Animal {
public override void Speak() => Console.WriteLine("Bark");
}
class Cat : Animal {
public override void Speak() => Console.WriteLine("Meow");
}
// उपयोग
Animal a = new Dog();
a.Speak(); // "Bark" - रनटाइम पॉलीमॉर्फिज्म
इनहेरिटेंस के लाभ
- कोड पुन: उपयोग (DRY सिद्धांत)।
- पॉलीमॉर्फिज्म सक्षम करता है।
- हायरार्किकल वर्गीकरण।
- रखरखाव आसान (बेस में बदलाव सब पर लागू)।