انواع مختلف وراثت در ++C — راهنمای کاربردی

۹۶۳ بازدید
آخرین به‌روزرسانی: ۰۱ مهر ۱۴۰۲
زمان مطالعه: ۲ دقیقه
انواع مختلف وراثت در ++C — راهنمای کاربردی

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

997696

می‌توان یک «کلاس مشتق» (Derived Class) را از یک «کلاس مبنا» (Base Class) با کنترل‌های دسترسی متفاوتی اعلان کرد. برای نمونه می‌توان از وراثت عمومی، وراثت حفاظت‌شده و یا وراثت خصوصی در این مورد استفاده کرد.

1#include <iostream>
2using namespace std;
3
4class base
5{
6.... ... ....
7};
8
9class derived : access_specifier base
10{
11.... ... ....
12};

نکته: کلیدواژه‌های public ،protected یا private به جای اصطلاح access_specifier در کد فوق مورد استفاده قرا می‌گیرند.

مثال‌هایی از وراثت عمومی، حفاظت‌شده و خصوصی در ++C

1class base 
2{
3	public:
4		int x;
5	protected:
6		int y;
7	private:
8		int z;
9};
10class publicDerived: public base
11{
12	// x is public
13	// y is protected
14	// z is not accessible from publicDerived
15};
16class protectedDerived: protected base
17{
18	// x is protected
19	// y is protected
20	// z is not accessible from protectedDerived
21};
22class privateDerived: private base
23{
24	// x is private
25	// y is private
26	// z is not accessible from privateDerived
27}

در کد فوق موارد زیر قابل توجه هستند:

  • Base سه متغیر عضو به نام‌های x ،y و z دارد که به ترتیب public ،protected و private هستند.
  • publicDerived متغیرهای x و y را به صورت عمومی و حفاظت‌شده به ارث می‌برد. Z به ارث نمی‌رسد، زیرا متغیر عضو خصوصی کلاس مبنا است.
  • protectedDerived متغیرهای x و y را به ارث می‌برد. هر دو متغیر حفاظت‌شده می‌شوند. z ارث‌بری نمی‌شود.
  • اگر یک کلاس به نام derivedFromProtectedDerived از protectedDerived مشتق کنیم، متغیرهای x و y نیز به این کلاس مشتق به ارث می‌رسند.
  • privateDerived متغیرهای x و y را به ارث می‌برد. هر دو متغیر خصوصی می‌شوند. z به ارث نمی‌رسد.
  • اگر یک کلاس به نام derivedFromPrivateDerived از privateDerived ارث‌بری کند، متغیرهای x و y به ارث نمی‌رسند، زیرا متغیرهای خصوصی privateDerived هستند.

در جداول زیر شرایط دسترس‌پذیری در زمان ارث‌بری توضیح داده شده است.

دسترس‌پذیری در موارد وراثت عمومی

دسترس‌پذیریمتغیرهای خصوصیمتغیرهای حفاظت شدهمتغیرهای عمومی
از کلاس خود دسترس‌پذیر است؟بلیبلیبلی
از کلاس مشتق شده دسترس‌پذیر است؟خیربلیبلی
از کلاس مشتق شده ثانویه دسترس‌پذیر است؟خیربلیبلی

دسترس‌پذیری در موارد وراثت حفاظت شده

دسترس‌پذیریمتغیرهای خصوصیمتغیرهای حفاظت شدهمتغیرهای عمومی
از کلاس خود دسترس‌پذیر است؟بلیبلیبلی
از کلاس مشتق‌شده دسترس‌پذیر است؟خیربلیبلی (به صورت حفاظت شده به ارث می‌رسد)
از کلاس مشتق شده ثانویه دسترس‌پذیر است؟خیربلیبلی

دسترس‌پذیری در موارد وراثت خصوصی

دسترس‌پذیریمتغیرهای خصوصیمتغیرهای حفاظت شدهمتغیرهای عمومی
از کلاس خود دسترس‌پذیر است؟بلیبلیبلی
از کلاس مشتق‌شده دسترس‌پذیر است؟خیربلی (به صورت خصوصی به ارث می‌رسد)بلی (به صورت حفاظت‌شده به ارث می‌رسد)
از کلاس مشتق شده ثانویه دسترس‌پذیر است؟خیرخیرخیر

برای مطالعه بخش بعدی این سری مقالات روی لینک زیر کلیک کنید:

اگر این مطلب برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

==

بر اساس رای ۹ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
programiz
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *