ارث بری همونطور که از اسمش کاملا پيداست همانند قانون ارث بردن در موجودات زنده عمل می کند , يعنی همانند طبيعت يک کلاس به عنوان کلاس پدر (مادر) فرض می شود و يک کلاس به عنوان فرزند از اين کلاس يک سری خصوصيات و قابليتها را به ارث می برد (فرزند نیز دارای بعضی امکانات پدر می شود . البته میزان آن بستگی به خواست ما دارد که توضیح خواهم داد )
کلاس پدر را کلاس پایه گویند Base Class .
ارث بری را مشتق کردن نیز می گویند .
+++++++++++++++++++++++++++++++++
نحوه مشتق کردن یک کلاس از کلاس دیگر :
فرض می کنیم کلاسی با نام A وجود دارد :
نوشته بالا يعنی کلاس B از کلاس A با دسترسی نوع (type) که توضيح خواهم داد که نوع دسترسی ۳ دسته است مشتق شده یا خصوصیات و قابلیتهای آن را به ارث برده است .
۳ نوع دسترسی برای مشتق کردن وجود دارد که عبارتند از :
۱- public
۲- protected
۳- private
يعنی يکی از سه کلمه بالا به جای (type ) نوشته خواهد شد.
هر کدام از اين انواع دسترسی توضيحات خاص خود را دارد که عبارتند از :
۱- public :
يعنی تمام خواص عمومی و خصوصی کلاس پايه را به همان شکل به ارث می برد . بدين شکل که موارد public در کلاس مبنا (پايه) برای اين کلاس جديد نيز وجود دارد و برای اين نيز public خواهد بود . و تمام خواص protetted و private نيز به همين شکل می باشد که در کلاس جديد نیز هر کدام protected و private خواهند بود .
نکته مهم : در این نوع دسترسی توابع عضو کلاس جدید اجازه دسترسی به خواص protected کلاس مبنا را دارند اما به خواص private خیر !! دسترسی ندارند .
۲- protected :
در این نوع دسترسی , کلاس جدید خواص کلاس مبنا را به این شکل به ارث می برد که تنها توابع عضو کلاس جدید به فقط خواص public و protected کلاس مبنا دسترسی دارند و به خواص private دسترسی ندارند .
۳- private :
این نوع دسترسی یعنی نه شئی از کلاس جدید و نه تابع عضو کلاس جدید به هیچ چیز از کلاس مبنا دسترسی ندارند !! ( عملا یعنی این نوع دسترسی یعنی اصلا مشتق نکنیم سنگین تریم!!! )
نکته بسیار مهم :
ارث بری میتواند به گونه ای باشد که یک کلاس از تعداد بیش از ۱ کلاس ارث ببرد ( مشتق شود ) . مثلا :
}class B: public A , public C , protected D , public E , private F
.
.
.
.
}
+++++++++++++++++++++++++++++++++++++++++++++
تا اينجا ارث بری تقريبا مطرح شد و موارد بعدی که بايد توضيح بدم شديدا با ارث بری رابطه مستقيم دارند . مثل توابع مجازی virtual که در جلسات بعدی مطرح خواهم کرد
کلاس پدر را کلاس پایه گویند Base Class .
ارث بری را مشتق کردن نیز می گویند .
+++++++++++++++++++++++++++++++++
نحوه مشتق کردن یک کلاس از کلاس دیگر :
فرض می کنیم کلاسی با نام A وجود دارد :
} class B
type) A
; int a,d
:public
;(void Rotate (void
}
; int a,d
:public
;(void Rotate (void
}
نوشته بالا يعنی کلاس B از کلاس A با دسترسی نوع (type) که توضيح خواهم داد که نوع دسترسی ۳ دسته است مشتق شده یا خصوصیات و قابلیتهای آن را به ارث برده است .
۳ نوع دسترسی برای مشتق کردن وجود دارد که عبارتند از :
۱- public
۲- protected
۳- private
يعنی يکی از سه کلمه بالا به جای (type ) نوشته خواهد شد.
هر کدام از اين انواع دسترسی توضيحات خاص خود را دارد که عبارتند از :
۱- public :
يعنی تمام خواص عمومی و خصوصی کلاس پايه را به همان شکل به ارث می برد . بدين شکل که موارد public در کلاس مبنا (پايه) برای اين کلاس جديد نيز وجود دارد و برای اين نيز public خواهد بود . و تمام خواص protetted و private نيز به همين شکل می باشد که در کلاس جديد نیز هر کدام protected و private خواهند بود .
نکته مهم : در این نوع دسترسی توابع عضو کلاس جدید اجازه دسترسی به خواص protected کلاس مبنا را دارند اما به خواص private خیر !! دسترسی ندارند .
۲- protected :
در این نوع دسترسی , کلاس جدید خواص کلاس مبنا را به این شکل به ارث می برد که تنها توابع عضو کلاس جدید به فقط خواص public و protected کلاس مبنا دسترسی دارند و به خواص private دسترسی ندارند .
۳- private :
این نوع دسترسی یعنی نه شئی از کلاس جدید و نه تابع عضو کلاس جدید به هیچ چیز از کلاس مبنا دسترسی ندارند !! ( عملا یعنی این نوع دسترسی یعنی اصلا مشتق نکنیم سنگین تریم!!! )
نکته بسیار مهم :
ارث بری میتواند به گونه ای باشد که یک کلاس از تعداد بیش از ۱ کلاس ارث ببرد ( مشتق شود ) . مثلا :
}class B: public A , public C , protected D , public E , private F
.
.
.
.
}
+++++++++++++++++++++++++++++++++++++++++++++
تا اينجا ارث بری تقريبا مطرح شد و موارد بعدی که بايد توضيح بدم شديدا با ارث بری رابطه مستقيم دارند . مثل توابع مجازی virtual که در جلسات بعدی مطرح خواهم کرد