خب بیایم به کلمه‌ی polymorphism نگاه کنیم و مفهومش رو توی کدنویسی مخصوصاً تو C# درک کنیم.
چون قبلاً یه بخش از polymorphism رو دیدیم.
ولی حالا می‌خوایم عمیق‌تر بریم سراغش.
خب polymorphism یعنی چی؟
polymorphism یه کلمه‌ی یونانیه که معنی «چند شکل بودن» می‌ده.
توی برنامه‌نویسی یعنی یه Interface یا یه Method بتونه بسته به شیئی که باهاش کار می‌کنه، رفتار متفاوتی داشته باشه.
به polymorphism این‌طوری فکر کن.
فرض کن یه کنترل از راه دور همه‌کاره داری.
این کنترل می‌تونه چند تا دستگاه مختلف رو کنترل کنه.
مثل یه تلویزیون، یه DVD Player و یه سیستم صوتی.
حتی اگه دکمه‌ی Play رو بزنی، ممکنه باعث شه تلویزیون یه فیلم پخش کنه،
یا DVD Player یه ویدیو رو شروع کنه، یا سیستم صوتی موزیک پخش کنه.
همون دکمه، همون متد، ولی بسته به دستگاهی که کنترل می‌کنی، عملکردش فرق می‌کنه.
نکته‌ی اصلی اینه: یه Interface ولی چند تا پیاده‌سازی.
یعنی یه تابع یا متد می‌تونه با اشیای مختلف کار کنه.
و نحوه‌ی اجرای واقعی‌ش بستگی به اون شیئی داره که در اون لحظه بهش ارجاع داده می‌شه.
مثلاً اگه چند نوع حیوان مختلف داشته باشی، هرکدوم صدای متفاوتی درمیارن.
با polymorphism می‌تونی متد makeSound رو برای هر حیوان صدا بزنی، و اون حیوان صدای مخصوص خودش رو تولید می‌کنه.
خب چرا اصلاً باید از polymorphism استفاده کنیم؟
اول از همه به خاطر انعطاف‌پذیری.
polymorphism بهت اجازه می‌ده کد منعطف‌تر و قابل‌استفاده‌مجدد بنویسی.
می‌تونی متدهایی بنویسی که با انواع مختلفی از objectها کار کنن، بدون این که دقیق بدونی نوعشون چیه.
و بعد هم نگهداری کد ساده‌تر می‌شه.
یعنی چی؟
یعنی وقتی بخوای کدت رو تغییر بدی یا گسترش بدی، راحت‌تره.
می‌تونی نوع‌های جدیدی از objectها اضافه کنی،
فقط کافیه مطمئن شی که اون‌ها با Interface یا کلاس پایه‌ی موردانتظار سازگارن، بدون اینکه لازم باشه کد اصلی رو تغییر بدی.
و این خیلی مهمه،
چون بعضی وقت‌ها کنترلی روی کلاس والد یا Interface نداری.
ولی باز کدت ساده‌تر می‌شه.
polymorphism باعث می‌شه بتونی کد مرتب‌تر و منسجم‌تری بنویسی.
چون می‌تونی با انواع مختلف objectها یه‌جور رفتار کنی، بدون اینکه لازم باشه برای هرکدوم جداگانه بنویسی.
دقیقاً همین‌طور.
پس در جمع‌بندی، polymorphism یه مفهوم قدرتمنده که باعث می‌شه متدها با objectهای مختلف کار کنن.
و این یعنی چی؟
یعنی کدت انعطاف‌پذیر، قابل‌استفاده‌مجدد و قابل‌نگهداری‌تر می‌شه،
چون یه Interface می‌تونه برای یه سری عملکرد کلی استفاده بشه، در حالی که عمل خاصش بستگی به موقعیت یا نوع دقیق object داره.
خب، همین بود برای این ویدیو.
تو ویدیوی بعدی می‌بینمت.
فعلاً خداحافظ.