دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۲۹
  • مرداد

جلسه ۲۳ : وراثت چندگانه در ++C

  • دسته‌بندی‌ها :
جلسه ۲۳ : وراثت چندگانه در ++C
    • جزئیات
    • نوع محتواآموزش تصویری

      با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، با یکی دیگر از جلسات دوره کامل آموزش ++C در خدمت شما دوستان هستیم . در بخش قبلی با بازنویسی توابع در وراثت آشنا شدید، در این جلسه قصد داریم به آموزش وراثت چندگانه در ++C و وراثت چند سطحی در ++C بپردازیم.

      همانطور که قبلا نیز اشاره کردیم، وراثت در ++C این امکان را به ما می دهد تا کلاس های جدیدی را بر پایه کلاس های موجود ایجاد کنیم.

      در ++C چندین مدل مختلف وراثت وجود دارد.

       

      وراثت چندسطحی در ++C

      در ++C نه تنها شما می توانید از کلاس پایه ارث بری کنید، بلکه می توانید از کلاس مشتق شده نیز ارث بری کنید.

      مثال : 

      در مثال بالا کلاس B از کلاس A مشتق شده و کلاس C ازکلاس B مشتق شده است.

      مثال:

      مثال : 

      خروجی:

      مثال : 

       

      در مثال بالا در تابع main وقتی تابع ()display فراخوانی می شود، تابع dispaly در کلاس A اجرا می شود. زیرا در کلاس های B و C این تابع وجود ندارد.

      کامپایلر ابتدا به دنبال تابع display در کلاس c می گردد و از آن جایی که این تابع در کلاس C وجود ندارد در کلاس B به ئنبال تابع می گردد. تابع در این کلاس هم نیست پس کامپایلر به سرا کلاس A می رود و تابع را اجرا می کند.

      اگر تابع در کلاس C وجود داشت، بازنویسی تابع رخ می داد و تابع dispaly کلاس C اجرا می شد.

       

      وراثت چندگانه در ++C

      در ++C یک کلاس می تواند از بیش از یک کلاس مشتق شود.
      برای مثال کلاس bat از دو کلاس Mammal و WingedAnimal مشتق شده است.

      وراثت چندگانه در ++C

       

      مثال:

      در برنامه زیر از وراثت چندگانه برای محاسبه محیط و مساحت یک مستطیل استفاده شده است:

      مثال : 

      خروجی به شکل زیر می باشد:

      مثال : 

       

      ابهام در وراثت چندگانه

      بیشترین مشکل با در وراثت چندگانه هنگام بازنویسی توابع رخ می دهد.

      فرض کنید دو کلاس پایه یک تابع همنام دارند که در کلاس مشتق شده بازنویسی نشده است.

      اگر اقدام به فراخوانی این تابع از طریق یک شی از کلاس مشتق شده کنید، کامپایلر یک خطا صادر می کند.
      این به این دلیل است که کامپایلر نمی داند کدام تابع را می خواهید فراخوانی کنید.

      به مثال زیر توجه کنید:

      مثال : 

      این مشکل می تواند با ذکر نام کلاس پایه حل شود:

      مثال : 

       

       

      جلسه آموزش وراثت چندگانه در ++C نیز به پایان رسید.
      در جلسه بعد به آموزش توابع و کلاس دوست در ++C خواهیم پرداخت. با ما همراه باشید

      QR:  جلسه ۲۳ : وراثت چندگانه در ++C
      به اشتراک بگذارید


      دیدگاه کاربران
      1. تصویر کاربر
      2. تصویر کاربر