زبان C++ برای پیادهسازی Inheritance (وراثت) دو روش و نکته مهم داریم که به شما کمک میکنه کلاسهای جدید رو از کلاسهای قبلی بسازید و کد رو قابل استفادهی مجدد کنید.
🔹 تعریف کلاس پایه (Base Class)
کلاس پایه همون کلاسیه که ویژگیها و توابع مشترک رو نگه میداره.
#include <iostream>
using namespace std;
class Animal {
public:
void eat() {
cout << "I can eat!" << endl;
}
void sleep() {
cout << "I can sleep!" << endl;
}
};
📌 اینجا Animal
کلاس پایه است که دو تابع eat
و sleep
داره.
🔹 تعریف کلاس مشتق (Derived Class)
کلاس مشتق ویژگیها و رفتار کلاس پایه رو به ارث میبره.
#include <iostream>
using namespace std;
class Animal {
public:
void eat() {
cout << "I can eat!" << endl;
}
void sleep() {
cout << "I can sleep!" << endl;
}
};
// Bird از Animal ارثبری میکنه
class Bird : public Animal {
public:
void fly() {
cout << "I can fly!" << endl;
}
};
int main() {
Bird b;
b.eat(); // تابع کلاس پایه
b.sleep(); // تابع کلاس پایه
b.fly(); // تابع کلاس خودش
return 0;
}
📌 خروجی:
I can eat!
I can sleep!
I can fly!
🔹 انواع وراثت
میتونیم نوع ارثبری رو مشخص کنیم:
class Derived : public Base // Public Inheritance
class Derived : protected Base // Protected Inheritance
class Derived : private Base // Private Inheritance
-
public
: اعضای public در کلاس مشتق هم public میمونن. (رایجترین حالت) -
protected
: اعضای public به protected تبدیل میشن. -
private
: همه اعضای public و protected به private تبدیل میشن.
🔹 سازندهها و ارثبری
وقتی شیء کلاس مشتق ساخته میشه، اول سازندهی کلاس پایه اجرا میشه:
class Parent {
public:
Parent() {
cout << "Parent constructor\n";
}
};
class Child : public Parent {
public:
Child() {
cout << "Child constructor\n";
}
};
int main() {
Child c;
return 0;
}
📌 خروجی:
Parent constructor
Child constructor
✅ نکات مهم
-
وراثت کد رو تمیز و قابل استفادهی مجدد میکنه.
-
در پروژههای بزرگ، از public inheritance بیشتر استفاده میشه.
-
اگر تابعی در کلاس مشتق با همون نام در کلاس پایه باشه، تابع جدید override میشه.