انواع مختلف وراثت در ++C — راهنمای کاربردی
در این مقاله با مفاهیم وراثت عمومی، حفاظتشده و خصوصی در ++C آشنا میشویم و با بررسی مثالهایی متوجه خواهیم شد که کجا و چگونه میتوانیم از هر کدام از انواع مختلف وراثت در ++C بهره بگیریم. برای مطالعه بخش قبلی از این مجموعه مقالات آموزشی روی لینک زیر کلیک کنید:
میتوان یک «کلاس مشتق» (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 هستند.
در جداول زیر شرایط دسترسپذیری در زمان ارثبری توضیح داده شده است.
دسترسپذیری در موارد وراثت عمومی
دسترسپذیری | متغیرهای خصوصی | متغیرهای حفاظت شده | متغیرهای عمومی |
---|---|---|---|
از کلاس خود دسترسپذیر است؟ | بلی | بلی | بلی |
از کلاس مشتق شده دسترسپذیر است؟ | خیر | بلی | بلی |
از کلاس مشتق شده ثانویه دسترسپذیر است؟ | خیر | بلی | بلی |
دسترسپذیری در موارد وراثت حفاظت شده
دسترسپذیری | متغیرهای خصوصی | متغیرهای حفاظت شده | متغیرهای عمومی |
---|---|---|---|
از کلاس خود دسترسپذیر است؟ | بلی | بلی | بلی |
از کلاس مشتقشده دسترسپذیر است؟ | خیر | بلی | بلی (به صورت حفاظت شده به ارث میرسد) |
از کلاس مشتق شده ثانویه دسترسپذیر است؟ | خیر | بلی | بلی |
دسترسپذیری در موارد وراثت خصوصی
دسترسپذیری | متغیرهای خصوصی | متغیرهای حفاظت شده | متغیرهای عمومی |
---|---|---|---|
از کلاس خود دسترسپذیر است؟ | بلی | بلی | بلی |
از کلاس مشتقشده دسترسپذیر است؟ | خیر | بلی (به صورت خصوصی به ارث میرسد) | بلی (به صورت حفاظتشده به ارث میرسد) |
از کلاس مشتق شده ثانویه دسترسپذیر است؟ | خیر | خیر | خیر |
برای مطالعه بخش بعدی این سری مقالات روی لینک زیر کلیک کنید:
اگر این مطلب برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای برنامهنویسی
- آموزش پیشرفته C++ (شی گرایی در سی پلاس پلاس)
- مجموعه آموزشهای دروس علوم و مهندسی کامپیوتر
- مدیریت حافظه در ++C — راهنمای جامع
- برنامه محاسبه رتبه الفبایی یک رشته — راهنمای کاربردی
==