آموزش مقدماتی C++ | وراثت

وراثت در کلاس ها

فرض کنید می خواهیم یک سایت فروشگاهی را برنامه نویسی کنیم که دو نوع محصول فیزیکی و دانلودی دارد. هر دوی این محصولات ویژگی هایی مثل نام، توضیحات، دسته بندی، قیمت عادی، قیمت ویژه، تصویر و … دارند. اما هر کدام نیز جداگانه ویژگی هایی دارند که مختص به خودشان است. مثلاً محصول فیزیکی ویژگی هایی مثل وزن، ابعاد، هزینه ارسال و … دارد، در حالیکه محصول دانلودی ویژگی هایی مثل حجم فایل، نوع محتوا، لینک دانلود و … دارد.

یک راه حل خوب برای مدیریت اطلاعات چنین داده هایی این است که یک کلاس کلی مربوط به کل محصولات داشته باشیم که ویژگی ها و متد های مشترک را در خود جای می دهد. و به طور جداگانه برای هر نوع محصول کلاسی داشته باشیم که اولاً ویژگی های کلاس اول را به ارث ببرد و ثانیاً ویژگی ها و متد های خود را نیز داشته باشد. برای این منظور از مفهومی به نام وراثت در کلاس ها استفاده می کنیم.

ر برنامه نویسی شیء گرا، می توانیم برای هر کلاس، کلاس های فرزندی تعریف کنیم که تمام متد ها و ویژگی های کلاس مادر را به ارث می برند. مفهوم وراثت را به دو دسته بندی تقسیم می کنیم:

  • کلاس برگرفته شده یا کلاس فرزند  – کلاسی که از کلاس دیگر ارث می برد
  • کلاس پایه یا کلاس مادر – کلاسی که از آن ارث برده شده است

برای ارث بری از یک کلاس از علامت : استفاده می کنیم.

در مثال زیر کلاس Car (فرزند) همه ی ویژگی ها و متد های کلاس Vehicle (مادر) را به ارث می برد:

// کلاس مادر
class Vehicle {
  public: 
     string brand = "Ford";
    void honk() {
       cout << "Tuut, tuut! \n" ;
    }
};

// کلاس فرزند
class Car: public Vehicle {
  public: 
     string model = "Mustang";
};

int main() {
  Car myCar;
   myCar.honk();
  cout << myCar.brand + " " + myCar.model;
   return 0;
}
پرسش و پاسخ این درس

برای ثبت پرسش ابتدا در سایت وارد شوید.

  • 1
  • 2
  • 3
  • 4