
---

**WEBVTT**

00:00.110 --> 00:00.920
خوش اومدید دوباره.

00:00.920 --> 00:04.520
توی این ویدیو قراره درباره‌ی ارث‌بری سازنده‌ها در زبان سی‌شارپ صحبت کنیم.

00:04.520 --> 00:08.000
پس یه مرور سریع کنیم ببینیم اصلاً سازنده‌ها چی هستن.

00:08.000 --> 00:14.450
سازنده‌ها متدهای خاصی در یک کلاس هستن که وقتی یه نمونه (object) از اون کلاس ساخته می‌شه، اجرا می‌شن.

00:14.450 --> 00:17.660
خب، حالا این چه ربطی به ارث‌بری داره؟

00:17.660 --> 00:24.620
در واقع، سازنده‌ی کلاس پایه قبل از سازنده‌ی کلاس فرزند اجرا می‌شه.

00:24.620 --> 00:31.340
این باعث می‌شه که کلاس پایه به‌درستی مقداردهی اولیه (initialize) بشه،
قبل از اینکه عملیات اضافه‌تری در کلاس فرزند انجام بشه.

00:33.110 --> 00:36.890
حالا چرا ارث‌بری سازنده مهمه؟

00:36.890 --> 00:37.940
چرا اهمیت داره؟

00:37.940 --> 00:44.600
اول از همه برای مقداردهی صحیحه — یعنی مطمئن می‌شیم که تمام فیلدها و ویژگی‌های کلاس پایه
قبل از هر کاری در کلاس فرزند به‌درستی تنظیم شدن.

00:44.600 --> 00:50.930
در غیر این صورت، ممکنه با خطاها و مشکلاتی مواجه بشیم،
چون شاید بخوایم به چیزی دسترسی پیدا کنیم که هنوز مقداردهی نشده.

01:04.160 --> 01:10.340
دلیل دومش حفظ حالت سازگار (consistent state) در سلسله‌مراتب شیءهاست.

01:10.640 --> 01:17.780
و دلیل سوم، **استفاده‌ مجدد از کد سازنده‌ی پایه** است،
تا مجبور نباشیم همون کد مقداردهی رو چندبار تکرار کنیم.

01:22.280 --> 01:24.560
خب حالا بریم یه مثال ببینیم.

01:24.560 --> 01:29.450
یه کلاس به اسم Person داریم با دو ویژگی: name و age.

01:29.450 --> 01:36.170
Setter این ویژگی‌ها private هست چون قرار نیست از بیرون کلاس مقدارشون تغییر کنه.

01:38.480 --> 01:41.690
یه سازنده برای کلاس Person داریم
که name و age رو مقدار می‌ده و یه پیام چاپ می‌کنه:
“Person constructor called.”

01:46.100 --> 01:50.840
بعد یه متد public داریم به اسم DisplayPersonInfo
که اطلاعات فرد (اسم و سن) رو نشون می‌ده.

01:52.250 --> 01:58.430
حالا یه کلاس دیگه داریم به اسم Employee که از Person ارث می‌بره.

01:58.430 --> 02:05.960
یعنی تمام ویژگی‌ها و متدهای Person مثل name، age و DisplayPersonInfo
به Employee هم می‌رسن.

02:15.230 --> 02:21.650
ولی برای Employee دوتا ویژگی جدید هم داریم:
jobTitle (سمت شغلی) و employeeID (شماره کارمندی).

02:28.730 --> 02:33.110
حالا توی کلاس فرزند باید چند کار انجام بدیم:

02:33.110 --> 02:37.700
اول باید name و age رو مقدار بدیم،
بعد jobTitle و employeeID رو.

02:43.490 --> 02:45.590
وقتی name و age رو به base پاس می‌دیم،

02:45.590 --> 02:51.230
در واقع داریم سازنده‌ی کلاس پایه (Person) رو صدا می‌زنیم.

02:57.380 --> 03:03.620
سازنده‌ی Person دوتا مقدار name و age می‌خواست —
اینا رو از همین‌جا از ورودی سازنده‌ی Employee می‌گیریم.

03:08.090 --> 03:13.280
یعنی هر وقت یه Employee بسازیم، باید name و age رو هم وارد کنیم.

03:13.280 --> 03:21.410
اون مقادیر به سازنده‌ی base پاس داده می‌شن
تا توی کلاس Person مقداردهی انجام بشه.

03:26.720 --> 03:33.410
بعدش نوبت به مقداردهی jobTitle و employeeID می‌رسه.

03:33.410 --> 03:43.220
نکته‌ی مهم اینه که نیازی نیست name و age رو دوباره اینجا تنظیم کنیم،
چون base خودش اون‌ها رو مقداردهی کرده.

03:49.940 --> 03:53.570
پس در نهایت Employee چهار ویژگی داره: name، age، jobTitle و employeeID.

03:57.560 --> 04:03.860
و یه پیام چاپ می‌کنه: “Employee constructor called.”

04:04.010 --> 04:09.650
حالا می‌خوایم اطلاعات کارمند رو نمایش بدیم.

04:09.650 --> 04:18.770
برای این کار، متد DisplayPersonInfo از کلاس پایه رو صدا می‌زنیم،
بدون اینکه نیاز باشه جدا یه Person بسازیم.

04:24.710 --> 04:30.740
و بعد با Console.WriteLine بقیه اطلاعات یعنی jobTitle و employeeID رو نشون می‌دیم.

04:33.200 --> 04:36.080
حالا یه Employee به اسم Joe می‌سازیم.

04:38.780 --> 04:47.420
Joe سی‌وشش سالشه، سمتش Sales Rep هست
و شماره کارمندی‌اش ۱۲۳۴ هست.

04:59.770 --> 05:07.690
بعد متد DisplayEmployeeInfo رو صدا می‌زنیم،
که خودش داخلش DisplayPersonInfo رو هم صدا می‌زنه.

05:07.690 --> 05:22.150
نتیجه این می‌شه که:

* سازنده‌ی Person اجرا می‌شه
* سازنده‌ی Employee اجرا می‌شه
* اسم و سن Joe نمایش داده می‌شن
* سمت و شماره کارمندی هم چاپ می‌شن

05:22.150 --> 05:27.610
یعنی خروجی ترکیبی از داده‌های کلاس پایه و کلاس فرزند هست.

05:30.310 --> 05:34.150
به این ترتیب، می‌بینیم همه چیز با هم ترکیب می‌شن و درست کار می‌کنن.

05:44.710 --> 05:49.390
پس تا اینجای کار همین بود،
توی ویدیوی بعدی یه کم بیشتر وارد جزئیات ارث‌بری می‌شیم.

05:49.390 --> 05:50.560
پس تا ویدیوی بعدی می‌بینمتون.

---

