
WEBVTT

00:00.200 --> 00:01.070
خوش آمدید.

00:01.070 --> 00:03.770
حالا وقت یک موضوع بسیار جالب است.

00:03.770 --> 00:05.810
و آن وراثت خواهد بود.

00:05.810 --> 00:10.790
ما از ساده شروع می‌کنیم و در طول مسیر به پیچیدگی بیشتری می‌رسیم.

00:10.790 --> 00:15.440
ما قبلاً وراثت را در مورد استثناها دیده‌ایم.

00:15.440 --> 00:20.900
بنابراین دیدیم که استثناها چگونه کار می‌کنند و انواع مختلفی از استثناها وجود دارد که همه از یک استثنای دیگر وراثت می‌برند.

00:20.900 --> 00:22.160
که همان کلاس پایه استثنا است.

00:22.160 --> 00:24.410
و ما خواهیم دید که چگونه می‌توانیم از آن برای خودمان استفاده کنیم.

00:24.410 --> 00:27.830
و این قسمت دوم برنامه‌نویسی شی‌گرا است.

00:27.830 --> 00:31.820
بنابراین قسمت اول فقط برای درک نحوه کار کلاس‌ها و نحوه کار کپسوله‌سازی بود.

00:31.820 --> 00:35.930
و حالا به نحوه کار وراثت نگاه خواهیم کرد، خوب؟

00:35.930 --> 00:41.210
پس بیایید یک پروژه جدید ایجاد کنیم.

00:41.210 --> 00:43.490
یا حداقل من این کار را انجام می‌دهم.

00:43.490 --> 00:45.050
و من این را برنامه وراثت می‌نامم، خوب؟

00:45.050 --> 00:49.310
بنابراین وراثت مشابه چیزی است که شما وقتی از والدین خود ویژگی‌هایی را به ارث می‌برید، دارید.

00:49.310 --> 00:57.020
بنابراین شما ممکن است رنگ مو یا رنگ چشم یکی از والدین خود را داشته باشید.

00:57.020 --> 01:02.660
حداقل شانس‌ها بسیار بالا است که اینطور باشد.

01:02.660 --> 01:05.660
و به‌هرحال، ساعت 4 صبح است.

01:05.660 --> 01:08.180
معمولاً من اینقدر زود بیدار نمی‌شوم، بنابراین می‌خواهم یک فنجان چای با شما داشته باشم.

01:08.180 --> 01:13.280
پس بیایید شروع کنیم.

01:13.280 --> 01:15.500
پس چه چیزی داریم؟

01:15.500 --> 01:17.630
ما کلاس برنامه خود را داریم و می‌خواهم به شما نشان دهم.

01:17.630 --> 01:21.710
و من این را در همان فضای نام، در همان فایل نشان می‌دهم، خوب؟

01:21.710 --> 01:27.320
بنابراین فرض کنید ما این کلاس پایه یا این کلاس به نام حیوان داریم، خوب؟

01:27.320 --> 01:29.450
یک حیوان می‌تواند انواع مختلفی از ویژگی‌ها داشته باشد.

01:29.450 --> 01:35.180
و این ویژگی‌ها می‌توانند خواص باشند.

01:35.180 --> 01:38.030
و سپس مهارت‌هایی دارد.

01:38.030 --> 01:39.980
و این مهارت‌ها می‌توانند متدها باشند.

01:39.980 --> 01:41.510
درست است.

01:41.510 --> 01:43.370
ما این را قبلاً دیده‌ایم.

01:43.370 --> 01:53.570
اما حالا بیایید از یک مثال نگاه کنیم که از کلاس حیوان وراثت می‌گیریم با یک کلاس به نام سگ، خوب؟

01:53.570 --> 01:54.860
بنابراین من یک متد عمومی به نام eat در اینجا دارم زیرا هر حیوان باید قادر به خوردن باشد.

02:04.220 --> 02:04.940
پس اینجا می‌گوید در حال خوردن هستم.

02:04.940 --> 02:07.520
و سپس من یک کلاس دیگر دارم.

02:07.520 --> 02:10.850
و این می‌تواند در یک فایل جداگانه باشد.

02:10.850 --> 02:19.220
نیازی نیست که در همان فایل با کلاس حیوان باشد، اما فقط برای نشان دادن آسان‌تر است که در یک جا انجام دهیم.

02:19.220 --> 02:20.240
پس ما یک کلاس دیگر به نام سگ داریم که از حیوان وراثت می‌گیرد.

02:20.240 --> 02:27.050
و این کلاس یک متد به نام bark خواهد داشت.

02:27.050 --> 02:30.860
خوب، زیرا هر حیوانی نمی‌تواند پارس کند یا قابلیت پارس کردن ندارد.

02:30.860 --> 02:36.590
برخی این کار را می‌کنند و عمدتاً این سگ‌ها هستند.

02:36.590 --> 02:40.190
خوب.

02:40.190 --> 02:43.970
به عنوان مثال، گربه‌ها می‌توانند میو میو کنند، فرض کنید.

02:43.970 --> 02:48.920
پس اینجا من فقط می‌خواهم چیزی مانند در حال پارس کردن بگویم.

02:48.920 --> 02:51.440
پس حالا چه اتفاقی در حال وقوع است؟

02:51.440 --> 02:56.750
خوب، نکته اینجاست که ما کلاس پایه‌ای به نام حیوان داریم.

02:56.750 --> 03:04.850
و این همچنین به‌طور معمول کلاس والد یا کلاس فوق‌العاده نامیده می‌شود که اساساً کلاسی است که اعضای آن وراثت می‌گیرند.

03:04.850 --> 03:07.880
این به چه معناست که اعضا وراثت می‌گیرند؟

03:07.880 --> 03:10.550
خوب، ما چند عضو را قبلاً دیدیم، درست است؟

03:10.550 --> 03:12.560
ما خواص را به عنوان اعضا دیدیم.

03:12.560 --> 03:14.330
ما متدها را به عنوان اعضا دیدیم.

03:14.330 --> 03:16.970
ما سایر اجزا را نیز به عنوان اعضا دیدیم.

03:16.970 --> 03:28.010
اما اساساً این‌ها ویژگی‌ها و قابلیت‌ها و غیره هستند که ما به سگ خود وراثت می‌دهیم.

03:28.010 --> 03:28.640
بنابراین سگ ما اکنون از حیوان وراثت می‌گیرد، که به این معنی است که تمام قابلیت‌هایی را که یک حیوان دارد، دارد.

03:28.640 --> 03:36.500
علاوه بر این، قابلیت‌های خود را نیز دارد.

03:36.500 --> 03:37.100
بنابراین منظور من از قابلیت‌ها خواص و متدها است.

03:37.100 --> 03:40.250
و خوب، اساساً اعضا.

03:40.250 --> 03:43.970
بنابراین برای وراثت گرفتن شما از علامت دو نقطه استفاده می‌کنید.

03:43.970 --> 03:46.190
و بعد از آن نام کلاس کلاسی که می‌خواهید از آن وراثت بگیرید را استفاده می‌کنید.

03:46.190 --> 03:51.290
بنابراین در این مورد می‌خواهم کلاس سگ من از حیوان وراثت بگیرد.

03:51.290 --> 03:57.050
ما این را با استثناها دیده‌ایم.

03:57.050 --> 04:00.710
بنابراین وقتی که ما واقعاً این را سریع ایجاد کنیم.

04:00.710 --> 04:07.550
بنابراین اینجا تقسیم بر صفر استثنا.

04:07.550 --> 04:12.200
اگر به آن نگاه کنیم، دیدیم که تقسیم بر صفر استثنا از استثنای حسابی وراثت می‌گیرد که به نوبه خود از استثنای سیستم وراثت می‌گیرد.

04:12.200 --> 04:20.390
که به نوبه خود از استثنا وراثت می‌گیرد.

04:20.390 --> 04:26.150
چندین لایه ممکن از وراثت وجود دارد و استثنا کلاس پایه مطلق است.

04:26.150 --> 04:35.090
بنابراین این اصول مطلق یک استثنا است.

04:35.090 --> 04:38.600
اما سپس استثنای سیستم، به عنوان مثال، برخی از ویژگی‌های خاصی دارد که مختص خود است و

04:38.600 --> 04:46.310
در داخل استثنای پایه موجود نیست.

04:46.310 --> 04:49.850
بنابراین در مثال ما، اگر این را به سگ و حیوان خود برگردانیم، سگ ما از حیوان وراثت می‌گیرد که

04:49.850 --> 04:57.470
به آن اجازه می‌دهد بخورد.

04:57.470 --> 04:58.850
اما.

04:58.850 --> 05:07.360
حیوان ما در مورد سگ نمی‌داند به این معنا که نمی‌تواند پارس کند، بنابراین هر حیوانی نمی‌تواند پارس کند.

05:07.360 --> 05:11.440
فقط سگ، به عنوان مثال، می‌تواند پارس کند زیرا ما به‌طور خاص آن را طراحی کرده‌ایم.

05:11.470 --> 05:17.800
حالا می‌توانیم یک لایه دیگر داشته باشیم که نژادهای مختلف سگ‌ها را داریم، به عنوان مثال.

05:17.800 --> 05:21.190
و هر یک از آن‌ها دوباره ویژگی‌های جدیدی خواهند داشت.

05:21.220 --> 05:21.820
خوب.

05:21.820 --> 05:30.820
بنابراین سطوح جدیدی از فعالیت، به عنوان مثال، یک کالی بسیار فعال است در مقایسه با یک گریهوند که شما انتظار دارید که بسیار فعال باشد زیرا بسیار سریع است، اما آن‌ها نسبتاً آرام هستند، درست است؟

05:30.820 --> 05:36.220
پس حالا بیایید این را در عمل ببینیم، خوب؟

05:36.220 --> 05:40.120
بیایید این وضعیت بسیار جالب را در عمل ببینیم.

05:40.120 --> 05:43.090
به‌هرحال، من همچنین باید اضافه کنم که این کلاس مشتق شده یا کلاس فرزند یا زیرکلاس است.

05:43.090 --> 05:52.690
بنابراین می‌بینید که راه‌های مختلفی برای توصیف آن وجود دارد.

05:52.690 --> 05:56.380
بنابراین این کلاسی است که اعضای کلاس پایه را وراثت می‌گیرد.

05:56.380 --> 06:00.970
بنابراین کلاس سگ کلاس مشتق شده یا کلاس فرزند کلاس حیوان یا زیرکلاس کلاس حیوان است.

06:00.970 --> 06:10.420
فکر می‌کنم شما متوجه شدید، درست است، اما فقط این است که این کلمات به‌طور متناوب استفاده می‌شوند و گاهی اوقات کمی گیج‌کننده است.

06:10.420 --> 06:18.550
اما بله، فقط بدانید که سه راه مختلف برای گفتن هر یک از این نوع‌ها وجود دارد، سه راه مختلف برای گفتن کلاس پایه و سه راه مختلف برای گفتن کلاس مشتق شده.

06:18.550 --> 06:25.810
پس حالا بیایید اینجا برویم و مطمئن شویم که کنسول ما بیدار می‌ماند.

06:25.810 --> 06:29.680
و سپس من اینجا یک سگ ایجاد می‌کنم، خوب، سگ من.

06:29.680 --> 06:36.070
و حالا می‌خواهم از متدهای سگم استفاده کنم.

06:36.070 --> 06:40.240
بنابراین می‌بینید که به‌طور خودکار چند گزینه در مورد متدها دارم.

06:40.240 --> 06:45.310
حالا همه آن‌ها را خودمان ایجاد کرده‌ایم، خوب؟

06:45.310 --> 06:52.690
بنابراین آن‌هایی که ما ایجاد کردیم، پارس و خوردن هستند.

06:52.690 --> 06:56.530
پس بیایید به آن‌ها نگاه کنیم و من به زودی به بقیه نیز می‌پردازم.

06:56.530 --> 07:00.100
اما فقط می‌خواستم ابتدا به این بپردازم.

07:00.100 --> 07:04.000
بنابراین می‌بینیم که یک سگ واقعاً می‌تواند پارس کند و یک سگ همچنین می‌تواند بخورد.

07:04.000 --> 07:06.310
بنابراین حتی اگر ما هرگز متد eat را در داخل سگ پیاده‌سازی نکرده باشیم، می‌تواند به متد eat والد خود دسترسی پیدا کند.

07:06.310 --> 07:13.720
بنابراین می‌بینید که IDE شکایتی ندارد.

07:13.720 --> 07:21.520
بیایید این را سریعاً اجرا کنیم و خواهید دید که سگ ما در حال پارس کردن و خوردن است.

07:21.520 --> 07:22.300
امیدوارم نه همزمان.

07:22.300 --> 07:25.510
اما بله، این تقریباً مفهوم بسیار پایه‌ای وراثت است، جایی که یک کلاس اعضای یک کلاس دیگر را وراثت می‌گیرد که مزایای زیادی را ایجاد می‌کند.

07:25.510 --> 07:32.050
حالا، به عنوان یک برنامه‌نویس، جایی که شما نیازی به ایجاد کلاس‌هایی که بسیار مشابه یکدیگر هستند ندارید، بلکه می‌توانید فقط از کلاسی که می‌خواهید وراثت بگیرید که بیشتر مهارت‌هایی را که می‌خواهید استفاده کنید، وراثت بگیرید بدون اینکه نیاز به تغییر کلاس موجود داشته باشید.

08:00.340 --> 08:05.200
این نکته اصلی اینجا است.

08:05.200 --> 08:06.730
ما کلاس حیوان را تغییر نمی‌دهیم.

08:06.730 --> 08:09.580
اگر بخواهیم ویژگی‌های جدیدی به کلاس سگ خود اضافه کنیم، فقط آن را به خود سگ اضافه می‌کنیم.

08:09.580 --> 08:15.820
پس این واقعاً جالب است.

08:15.820 --> 08:17.860
و این پایان این ویدیو است.

08:17.860 --> 08:20.020
اینقدر طولانی شده است.

08:20.020 --> 08:21.220
در ویدیو بعدی می‌بینمتان.
```