خوش اومدید دوباره.
توی این ویدیو قراره درباره‌ی ارث‌بری سازنده‌ها در زبان سی‌شارپ صحبت کنیم.
پس یه مرور سریع کنیم ببینیم اصلاً سازنده‌ها چی هستن.
سازنده‌ها متدهای خاصی در یک کلاس هستن که وقتی یه نمونه (object) از اون کلاس ساخته می‌شه، اجرا می‌شن.
خب، حالا این چه ربطی به ارث‌بری داره؟
در واقع، سازنده‌ی کلاس پایه قبل از سازنده‌ی کلاس فرزند اجرا می‌شه.
این باعث می‌شه که کلاس پایه به‌درستی مقداردهی اولیه (initialize) بشه، قبل از اینکه عملیات اضافه‌تری در کلاس فرزند انجام بشه.
حالا چرا ارث‌بری سازنده مهمه؟
چرا اهمیت داره؟
اول از همه برای مقداردهی صحیحه — یعنی مطمئن می‌شیم که تمام فیلدها و ویژگی‌های کلاس پایه قبل از هر کاری در کلاس فرزند به‌درستی تنظیم شدن.
در غیر این صورت، ممکنه با خطاها و مشکلاتی مواجه بشیم، چون شاید بخوایم به چیزی دسترسی پیدا کنیم که هنوز مقداردهی نشده.
دلیل دومش حفظ حالت سازگار (consistent state) در سلسله‌مراتب شیءهاست.
و دلیل سوم، **استفاده‌ مجدد از کد سازنده‌ی پایه** است، تا مجبور نباشیم همون کد مقداردهی رو چندبار تکرار کنیم.
خب حالا بریم یه مثال ببینیم.
یه کلاس به اسم Person داریم با دو ویژگی: name و age.
Setter این ویژگی‌ها private هست چون قرار نیست از بیرون کلاس مقدارشون تغییر کنه.
یه سازنده برای کلاس Person داریم که name و age رو مقدار می‌ده و یه پیام چاپ می‌کنه: “Person constructor called.”
بعد یه متد public داریم به اسم DisplayPersonInfo که اطلاعات فرد (اسم و سن) رو نشون می‌ده.
حالا یه کلاس دیگه داریم به اسم Employee که از Person ارث می‌بره.
یعنی تمام ویژگی‌ها و متدهای Person مثل name، age و DisplayPersonInfo به Employee هم می‌رسن.
ولی برای Employee دوتا ویژگی جدید هم داریم: jobTitle (سمت شغلی) و employeeID (شماره کارمندی).
حالا توی کلاس فرزند باید چند کار انجام بدیم:
اول باید name و age رو مقدار بدیم، بعد jobTitle و employeeID رو.
وقتی name و age رو به base پاس می‌دیم،
در واقع داریم سازنده‌ی کلاس پایه (Person) رو صدا می‌زنیم.
سازنده‌ی Person دوتا مقدار name و age می‌خواست — اینا رو از همین‌جا از ورودی سازنده‌ی Employee می‌گیریم.
یعنی هر وقت یه Employee بسازیم، باید name و age رو هم وارد کنیم.
اون مقادیر به سازنده‌ی base پاس داده می‌شن تا توی کلاس Person مقداردهی انجام بشه.
بعدش نوبت به مقداردهی jobTitle و employeeID می‌رسه.
نکته‌ی مهم اینه که نیازی نیست name و age رو دوباره اینجا تنظیم کنیم، چون base خودش اون‌ها رو مقداردهی کرده.
پس در نهایت Employee چهار ویژگی داره: name، age، jobTitle و employeeID.
و یه پیام چاپ می‌کنه: “Employee constructor called.”
حالا می‌خوایم اطلاعات کارمند رو نمایش بدیم.
برای این کار، متد DisplayPersonInfo از کلاس پایه رو صدا می‌زنیم، بدون اینکه نیاز باشه جدا یه Person بسازیم.
و بعد با Console.WriteLine بقیه اطلاعات یعنی jobTitle و employeeID رو نشون می‌دیم.
حالا یه Employee به اسم Joe می‌سازیم.
Joe سی‌وشش سالشه، سمتش Sales Rep هست و شماره کارمندی‌اش ۱۲۳۴ هست.
بعد متد DisplayEmployeeInfo رو صدا می‌زنیم، که خودش داخلش DisplayPersonInfo رو هم صدا می‌زنه.
نتیجه این می‌شه که: * سازنده‌ی Person اجرا می‌شه * سازنده‌ی Employee اجرا می‌شه * اسم و سن Joe نمایش داده می‌شن * سمت و شماره کارمندی هم چاپ می‌شن
یعنی خروجی ترکیبی از داده‌های کلاس پایه و کلاس فرزند هست.
به این ترتیب، می‌بینیم همه چیز با هم ترکیب می‌شن و درست کار می‌کنن.
پس تا اینجای کار همین بود، توی ویدیوی بعدی یه کم بیشتر وارد جزئیات ارث‌بری می‌شیم.
پس تا ویدیوی بعدی می‌بینمتون. ---