WEBVTT

00:00.140 --> 00:01.040
خوش آمدید.

00:01.040 --> 00:04.160
در این ویدیو، ما به بررسی روش.override می‌پردازیم.

00:04.160 --> 00:11.030
و برای استفاده از overriding باید از کلمه کلیدی override و کلمه کلیدی virtual استفاده کنیم.

00:11.030 --> 00:13.070
حالا چرا باید این کار را انجام دهیم؟

00:13.070 --> 00:21.350
موضوع این است که اگر به مثال خود نگاه کنیم، ما یک **سگ** پارس‌کن و یک **گربه** واق‌واق‌کن داریم.

00:21.380 --> 00:21.980
باشه.

00:21.980 --> 00:26.750
ولی در واقع هر جانوری صدا تولید می‌کند، حداقل یک صدا، درسته؟

00:26.750 --> 00:28.760
یا هر نوع ارتباطی.

00:28.760 --> 00:36.290
پس یک سگ ممکن است پارس کند، یک گربه ممکن است میو کند، یک پرنده ممکن است جیک‌جیک کند، می‌دونی، مثل هر حیوان دیگری.

00:36.290 --> 00:42.170
خب، شاید بعضی از حیوانات نیازی به ارگان‌هایی برای تولید صدا نداشته باشند یا هر چیز دیگری برای ایجاد صدا.

00:42.170 --> 00:42.500
صدا.

00:42.500 --> 00:46.400
اما بیایید فرض کنیم که هر حیوانی راهی برای تولید صدا دارد.

00:46.400 --> 00:51.200
پس بیایید یک روش برای این کار ایجاد کنیم، public void Makesound.

00:51.200 --> 00:55.910
و حالا در اینجا تنها صدای عمومی تولید خواهیم کرد.

00:55.910 --> 01:00.950
پس حیوان یک صدای عمومی تولید می‌کند.

01:00.950 --> 01:11.330
حالا چیزی که می‌خواهم انجام دهم این است که می‌خواهم متد make sound را به‌عنوان یک متد منحصر به فرد برای **سگ** و همچنین منحصر به فرد برای **گربه** پیاده‌سازی کنم.

01:11.330 --> 01:12.080
خیلی خاص، به‌عبارتی.

01:12.080 --> 01:14.420
برای دستیابی به این هدف، آنچه می‌توانم انجام دهم این است که واقعاً می‌توانم نام متد bark و متد meow را به make sound تغییر دهم.

01:14.420 --> 01:22.220
با این حال، این هنوز درست نیست.

01:22.220 --> 01:25.370
بنابراین هنوز دو کلمه کلیدی که درباره‌اش صحبت می‌کردم را کم داریم، درست است؟

01:25.370 --> 01:30.890
کلمه کلیدی virtual و همچنین کلمه کلیدی override.

01:30.890 --> 01:34.460
حالا وقتی روی آن قرار می‌گیرید، می‌بینید که می‌گوید که این عضو وراثتی animal make sound را پنهان می‌کند.

01:34.460 --> 01:40.580
اگر پنهان کردن هم هدف بوده، از کلمه کلیدی new استفاده کنید.

01:40.580 --> 01:42.650
خب، این چیزی نیست که ما بخواهیم انجام دهیم.

01:42.650 --> 01:44.270
آنچه واقعاً می‌خواهیم انجام دهیم این است که override کنیم.

01:44.270 --> 01:46.640
حالا برای دستیابی به این هدف، آنچه که نیاز داریم این است که کلمه کلیدی virtual را اینجا اضافه کنیم.

01:46.670 --> 01:53.720
پس این کلمه کلیدی virtual است که به ما اجازه می‌دهد که متد make sound را در کلاس‌های مشتق‌شده override کنیم.

01:53.720 --> 02:04.310
پس حالا می‌توانیم بگوییم public override void make sound.

02:04.310 --> 02:10.730
می‌بینید که هشدار از بین می‌رود.

02:10.730 --> 02:14.060
و من هم کلمه کلیدی override را به make sound گربه اضافه می‌کنم.

02:14.060 --> 02:20.300
پس گربه یک کلاس مشتق‌شده دیگر از حیوان است.

02:20.300 --> 02:23.450
و حالا متدهای منحصر به فرد make sound را برای هر نوع حیوان خواهیم داشت، دست‌کم در مورد ما.

02:23.450 --> 02:31.250
پس بیایید بگوییم که سگ من وجود دارد و حالا می‌توانیم صدایش کنیم.

02:31.250 --> 02:31.790
حالا بیایید همین کار را با گربه انجام دهیم.

02:31.790 --> 02:37.820
پس گربه من یک گربه جدید خواهد بود.

02:37.820 --> 02:39.920
و حالا بیایید از گربه‌ام استفاده کنیم، صدای من.

02:39.920 --> 02:43.820
راستی، می‌خواهم این متد eat را حذف کنم.

02:43.820 --> 02:46.700
و حالا بیایید این را دوباره اجرا کنیم و خواهیم دید که سگ پارس می‌کند و گربه میو می‌کند.

02:46.700 --> 02:49.070
باشه، من متن را اینجا قطع کردم، گربه می‌گوید میو.

02:49.070 --> 02:53.990
حالا بیایید این را دوباره اجرا کنیم و خواهید دید که گربه میو می‌کند و سگ پارس می‌کند.

02:53.990 --> 02:59.180
ووف، ووف.

02:59.330 --> 03:04.130
خوب، پس این همان چیزی است که کلمه کلیدی override و کلمه کلیدی virtual به شما اجازه می‌دهد انجام دهید.

03:04.130 --> 03:04.880
حالا چرا این می‌تواند مفید باشد؟

03:04.880 --> 03:11.180
خب، موضوع این است که بعضی اوقات شما واقعاً می‌خواهید از همان نام متد با یک کلاس مشتق‌شده استفاده کنید

03:11.180 --> 03:20.390
چون می‌خواهید چیزی مشابه یا پیاده‌سازی خاص خودش را برای هر کلاس خاص انجام دهید.

03:20.390 --> 03:27.260
و برای دستیابی به این هدف، نیاز دارید که آن را override کنید.

03:27.260 --> 03:31.430
و برای اینکه یک متد overrideable باشد، باید متد در کلاس پایه virtual باشد.

03:31.430 --> 03:39.050
پس این کلمه کلیدی virtual حالا به ما اجازه می‌دهد که آن متد را override کنیم.

03:39.050 --> 03:43.430
می‌بینید، اگر این کلمه کلیدی virtual را حذف کنم، اینجا خطا می‌گیرد.

03:43.430 --> 03:47.120
می‌گوید Makesound نمی‌تواند عضو وراثتی animal make sound را override کند، چون به عنوان virtual علامت‌گذاری نشده است.

03:47.120 --> 03:53.600
abstract یا override.

03:53.600 --> 03:55.100
پس به همین دلیل است که ما این کلمه کلیدی virtual را اینجا اضافه می‌کنیم.

03:55.100 --> 03:58.820
و سپس می‌گوییم، می‌دانید چه؟ 

03:58.820 --> 04:00.890
صدا می‌تواند override شود.

04:00.890 --> 04:10.400
اما حالا چگونه می‌توانم به این متد پایه از حیوان برای سگ و گربه دسترسی پیدا کنم.

04:10.400 --> 04:13.100
و این چیزی است که قرار است در ویدیو بعدی به آن بپردازیم.

04:13.100 --> 04:18.680
قبل از اینکه این کار را انجام دهیم، می‌خواهم مطمئن شوم که متوجه شدید که آنچه که در اینجا درباره overriding

04:18.680 --> 04:25.910
و این کلمه کلیدی virtual انجام دادیم، بخشی از polymorphism است، که سومین بخش برنامه‌نویسی شی‌گرا است.

04:25.910 --> 04:31.640
اما اطلاعات زیادی برای یادگیری درباره polymorphism وجود دارد، و ما آن را در ادامه دوره پوشش خواهیم داد.

04:31.640 --> 04:37.580
در حال حاضر، فقط می‌خواهم به نکات دیگر وراثت بپردازم، اما سپس واقعاً عمیق به polymorphism و همچنین کلمه کلیدی abstract

04:37.580 --> 04:40.730
پرداخت خواهیم کرد.

04:40.730 --> 04:45.650
پس بیایید ابتدا به کلمه کلیدی base در ویدیو بعدی نگاهی بیندازیم.