وراثت (Inheritance)

آشنایی با وراثت در C++ و نحوه ایجاد کلاس‌های مشتق

وراثت (Inheritance)

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

ساختار وراثت

class ChildClass : accessSpecifier ParentClass {
    // اعضای کلاس فرزند
};

مثال پایه

// کلاس پایه
class Animal {
public:
    void eat() {
        cout << "حیوان در حال خوردن است" << endl;
    }
    
    void sleep() {
        cout << "حیوان در حال خواب است" << endl;
    }
};

// کلاس مشتق
class Dog : public Animal {
public:
    void bark() {
        cout << "سگ در حال پارس کردن است" << endl;
    }
};

int main() {
    Dog myDog;
    myDog.eat();    // از کلاس پایه
    myDog.sleep();  // از کلاس پایه
    myDog.bark();  // از کلاس مشتق
    return 0;
}

انواع وراثت

نوعتوضیح
Singleیک کلاس پایه
Multipleچندین کلاس پایه
Multilevelزنجیره‌ای
Hierarchicalیک کلاس پایه، چندین فرزند

وراثت چندگانه (Multiple Inheritance)

class A {
public:
    void methodA() { cout << "Method A" << endl; }
};

class B {
public:
    void methodB() { cout << "Method B" << endl; }
};

class C : public A, public B {
public:
    void methodC() { cout << "Method C" << endl; }
};

int main() {
    C obj;
    obj.methodA();
    obj.methodB();
    obj.methodC();
    return 0;
}

وراثت چندسطحی (Multilevel Inheritance)

class Animal {
public:
    void eat() { cout << "خوردن" << endl; }
};

class Mammal : public Animal {
public:
    void breathe() { cout << "نفس کشیدن" << endl; }
};

class Dog : public Mammal {
public:
    void bark() { cout << "پارس کردن" << endl; }
};

int main() {
    Dog myDog;
    myDog.eat();      // از Animal
    myDog.breathe();  // از Mammal
    myDog.bark();    // از Dog
    return 0;
}

سازنده‌ها در وراثت

class Parent {
public:
    Parent() {
        cout << "سازنده Parent" << endl;
    }
};

class Child : public Parent {
public:
    Child() : Parent() {
        cout << "سازنده Child" << endl;
    }
};

دسترسی به اعضای محافظت شده

class Parent {
protected:
    int protectedValue;
    
public:
    Parent() : protectedValue(100) {}
};

class Child : public Parent {
public:
    void display() {
        cout << protectedValue;  // قابل دسترسی
    }
};

بهترین شیوه‌ها

نکات مهم

این مبحث بخشی از دوره آموزش کامل C++ است.

ابزارهای مرتبط