خوش آمدید.
در این ویدیو، ما به بررسی روش.override می‌پردازیم.
و برای استفاده از overriding باید از کلمه کلیدی override و کلمه کلیدی virtual استفاده کنیم.
حالا چرا باید این کار را انجام دهیم؟
موضوع این است که اگر به مثال خود نگاه کنیم، ما یک **سگ** پارس‌کن و یک **گربه** واق‌واق‌کن داریم.
باشه.
ولی در واقع هر جانوری صدا تولید می‌کند، حداقل یک صدا، درسته؟
یا هر نوع ارتباطی.
پس یک سگ ممکن است پارس کند، یک گربه ممکن است میو کند، یک پرنده ممکن است جیک‌جیک کند، می‌دونی، مثل هر حیوان دیگری.
خب، شاید بعضی از حیوانات نیازی به ارگان‌هایی برای تولید صدا نداشته باشند یا هر چیز دیگری برای ایجاد صدا.
صدا.
اما بیایید فرض کنیم که هر حیوانی راهی برای تولید صدا دارد.
پس بیایید یک روش برای این کار ایجاد کنیم، public void Makesound.
و حالا در اینجا تنها صدای عمومی تولید خواهیم کرد.
پس حیوان یک صدای عمومی تولید می‌کند.
حالا چیزی که می‌خواهم انجام دهم این است که می‌خواهم متد make sound را به‌عنوان یک متد منحصر به فرد برای **سگ** و همچنین منحصر به فرد برای **گربه** پیاده‌سازی کنم.
خیلی خاص، به‌عبارتی.
برای دستیابی به این هدف، آنچه می‌توانم انجام دهم این است که واقعاً می‌توانم نام متد bark و متد meow را به make sound تغییر دهم.
با این حال، این هنوز درست نیست.
بنابراین هنوز دو کلمه کلیدی که درباره‌اش صحبت می‌کردم را کم داریم، درست است؟
کلمه کلیدی virtual و همچنین کلمه کلیدی override.
حالا وقتی روی آن قرار می‌گیرید، می‌بینید که می‌گوید که این عضو وراثتی animal make sound را پنهان می‌کند.
اگر پنهان کردن هم هدف بوده، از کلمه کلیدی new استفاده کنید.
خب، این چیزی نیست که ما بخواهیم انجام دهیم.
آنچه واقعاً می‌خواهیم انجام دهیم این است که override کنیم.
حالا برای دستیابی به این هدف، آنچه که نیاز داریم این است که کلمه کلیدی virtual را اینجا اضافه کنیم.
پس این کلمه کلیدی virtual است که به ما اجازه می‌دهد که متد make sound را در کلاس‌های مشتق‌شده override کنیم.
پس حالا می‌توانیم بگوییم public override void make sound.
می‌بینید که هشدار از بین می‌رود.
و من هم کلمه کلیدی override را به make sound گربه اضافه می‌کنم.
پس گربه یک کلاس مشتق‌شده دیگر از حیوان است.
و حالا متدهای منحصر به فرد make sound را برای هر نوع حیوان خواهیم داشت، دست‌کم در مورد ما.
پس بیایید بگوییم که سگ من وجود دارد و حالا می‌توانیم صدایش کنیم.
حالا بیایید همین کار را با گربه انجام دهیم.
پس گربه من یک گربه جدید خواهد بود.
و حالا بیایید از گربه‌ام استفاده کنیم، صدای من.
راستی، می‌خواهم این متد eat را حذف کنم.
و حالا بیایید این را دوباره اجرا کنیم و خواهیم دید که سگ پارس می‌کند و گربه میو می‌کند.
باشه، من متن را اینجا قطع کردم، گربه می‌گوید میو.
حالا بیایید این را دوباره اجرا کنیم و خواهید دید که گربه میو می‌کند و سگ پارس می‌کند.
ووف، ووف.
خوب، پس این همان چیزی است که کلمه کلیدی override و کلمه کلیدی virtual به شما اجازه می‌دهد انجام دهید.
حالا چرا این می‌تواند مفید باشد؟
خب، موضوع این است که بعضی اوقات شما واقعاً می‌خواهید از همان نام متد با یک کلاس مشتق‌شده استفاده کنید
چون می‌خواهید چیزی مشابه یا پیاده‌سازی خاص خودش را برای هر کلاس خاص انجام دهید.
و برای دستیابی به این هدف، نیاز دارید که آن را override کنید.
و برای اینکه یک متد overrideable باشد، باید متد در کلاس پایه virtual باشد.
پس این کلمه کلیدی virtual حالا به ما اجازه می‌دهد که آن متد را override کنیم.
می‌بینید، اگر این کلمه کلیدی virtual را حذف کنم، اینجا خطا می‌گیرد.
می‌گوید Makesound نمی‌تواند عضو وراثتی animal make sound را override کند، چون به عنوان virtual علامت‌گذاری نشده است.
abstract یا override.
پس به همین دلیل است که ما این کلمه کلیدی virtual را اینجا اضافه می‌کنیم.
و سپس می‌گوییم، می‌دانید چه؟
صدا می‌تواند override شود.
اما حالا چگونه می‌توانم به این متد پایه از حیوان برای سگ و گربه دسترسی پیدا کنم.
و این چیزی است که قرار است در ویدیو بعدی به آن بپردازیم.
قبل از اینکه این کار را انجام دهیم، می‌خواهم مطمئن شوم که متوجه شدید که آنچه که در اینجا درباره overriding
و این کلمه کلیدی virtual انجام دادیم، بخشی از polymorphism است، که سومین بخش برنامه‌نویسی شی‌گرا است.
اما اطلاعات زیادی برای یادگیری درباره polymorphism وجود دارد، و ما آن را در ادامه دوره پوشش خواهیم داد.
در حال حاضر، فقط می‌خواهم به نکات دیگر وراثت بپردازم، اما سپس واقعاً عمیق به polymorphism و همچنین کلمه کلیدی abstract
پرداخت خواهیم کرد.
پس بیایید ابتدا به کلمه کلیدی base در ویدیو بعدی نگاهی بیندازیم.