बहुस्तरीय इनहेरिटेंस (Multilevel Inheritance) तब होता है जब एक डेराइव्ड क्लास दूसरी डेराइव्ड क्लास से इनहेरिट करती है, जिससे इनहेरिटेंस की एक श्रृंखला बनती है।
वास्तविक दुनिया का उदाहरण
दादा → पिता → पुत्र
- Grandfather (बेस क्लास)
- Father : Grandfather से इनहेरिट करता है
- Son : Father से इनहेरिट करता है (और परोक्ष रूप से Grandfather से)
उदाहरण
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Demo {
class Son : Father {
public void DisplayTwo() {
Console.WriteLine("Son..");
}
static void Main(string[] args) {
Son s = new Son();
s.Display(); // Grandfather का मेथड
s.DisplayOne(); // Father का मेथड
s.DisplayTwo(); // Son का मेथड
Console.Read();
}
}
class Grandfather {
public void Display() {
Console.WriteLine("Grandfather...");
}
}
class Father : Grandfather {
public void DisplayOne() {
Console.WriteLine("Father...");
}
}
}
आउटपुट
Grandfather... Father... Son..
मुख्य अवधारणाएं
| क्लास | इससे इनहेरिट करता है | पहुंच योग्य मेथड्स |
|---|---|---|
| Grandfather | - (बेस) | Display() |
| Father | Grandfather | Display(), DisplayOne() |
| Son | Father | Display(), DisplayOne(), DisplayTwo() |
कंस्ट्रक्टर चेनिंग
class Grandfather {
public Grandfather(string name) {
Console.WriteLine($"Grandfather: {name}");
}
}
class Father : Grandfather {
public Father(string name, int age) : base(name) {
Console.WriteLine($"Father: {age}");
}
}
class Son : Father {
public Son(string name, int age, string school) : base(name, age) {
Console.WriteLine($"Son: {school}");
}
}
मेथड ओवरराइडिंग
class Grandfather {
public virtual void Display() {
Console.WriteLine("Grandfather...");
}
}
class Father : Grandfather {
public override void Display() {
Console.WriteLine("Father (overridden)...");
base.Display(); // बेस मेथड कॉल कर सकते हैं
}
}
महत्वपूर्ण बिंदु
- C# मल्टीपल इनहेरिटेंस (एक क्लास एक से अधिक बेस क्लास से) का समर्थन नहीं करता - इसके लिए इंटरफेसेस उपयोग करें।
- बहुस्तरीय इनहेरिटेंस में प्रत्येक स्तर पिछले पर आधारित होता है।
baseकीवर्ड बेस क्लास के मेंबर्स तक पहुंचने के लिए उपयोग होता है।virtual/overrideपॉलीमॉर्फिज्म सक्षम करते हैं।- गहरी इनहेरिटेंस हायरार्की (3+ स्तर) से बचें - कंपोजिशन प्राथमिकता दें।