C++ Multilevel Inheritance

زبان ++C می‌تونیم وراثت رو در چند سطح (Multilevel Inheritance) پیاده کنیم. یعنی یک کلاس از کلاس دیگری ارث‌بری کنه و خودش پایه‌ی یک کلاس بعدی بشه.

🔹 تعریف چند سطحی
در وراثت چند سطحی، زنجیره‌ای از کلاس‌ها داریم:

کلاس A → کلاس B → کلاس C

کلاس B از A ارث می‌بره و کلاس C از B ارث می‌بره. در نتیجه C همه‌ی ویژگی‌های A و B رو داره.

🔹 نمونه کد ساده

#include <iostream> using namespace std; class Animal { // سطح اول public: void eat() { cout << "I can eat!" << endl; } }; class Bird : public Animal { // سطح دوم public: void fly() { cout << "I can fly!" << endl; } }; class Sparrow : public Bird { // سطح سوم public: void sound() { cout << "Chirp Chirp!" << endl; } }; int main() { Sparrow s; s.eat(); // از Animal s.fly(); // از Bird s.sound(); // از Sparrow return 0; }

📌 خروجی:

I can eat! I can fly! Chirp Chirp!

🔹 اجرای سازنده‌ها در چند سطح

وقتی شیء کلاس آخر ساخته میشه، سازنده‌ها به ترتیب از بالا به پایین اجرا میشن:

#include <iostream> using namespace std; class A { public: A() { cout << "Constructor A\n"; } }; class B : public A { public: B() { cout << "Constructor B\n"; } }; class C : public B { public: C() { cout << "Constructor C\n"; } }; int main() { C obj; return 0; }

📌 خروجی:

Constructor A Constructor B Constructor C

🔹 انواع دسترسی (Access Specifier)
مثل وراثت عادی می‌تونیم تعیین کنیم کلاس بعدی public/protected/private ارث‌بری کنه:

class B : protected A class C : public B
  • اگر protected باشه، اعضای public در کلاس B به protected تبدیل میشن و برای C هم protected خواهند بود.

  • اگر private باشه، اعضای public و protected در B برای C دیگه قابل دسترس نیستن.

نکات مهم

  • این مدل برای ساخت سلسله‌مراتب منطقی (مثلاً Vehicle → Car → ElectricCar) عالیه.

  • ترتیب اجرا همیشه از کلاس پایه تا کلاس آخر هست.

  • اگر توابع هم‌نام داشته باشیم، تابع کلاس پایین‌تر override میشه.