دو سوال درباره چندریختی (Polymorphism) در سی شارپ
با عرض سلام و ادب و احترام خدمت تمام آی تی پرویی های عزیز.
بنده مشغول مطالعه مبحث Polymorphism (چندریختی) در زبان برنامه نویسی سی شارپ بودم که دو سوال کلی برام پیش اومد. ممنون میشم اگه اساتید پاسخ بدن:
1. تعریف تخصصی مبحث (چندریختی) چیست؟ (چون من هرجایی رفتم تعریف خاص و کلی و دقیقی ندیدم) (درضمن عرض کردم تعریف تخصصی، یعنی منظورم مفهوم کلی و مثال اون در دنیای واقعی نیست.)
2. آیا مبحث چند ریختی فقط محدود به "بازنویسی رفتارها و خصوصیات کلاس پدر، در کلاس های فرزند" میشه؟ یا به عنوان مثال مبحث Method Overloading هم جزو همین مفهومه؟؟
3. غیر از override کردن متد ها (متد های Virtual و Abstract)، چه راه های دیگه ای برای اعمال مفهوم چندریختی وجود داره؟
باتشکر
6 پاسخ
سلام و عرض ادب، همونطور که آقای جادی عزیز فرمودن داخل لینکی که گذاشته شده به صورت کامل مبحث Polymorphism توضیح داده شده. بنده دقیقاً متوجه نشدم منظور شما از تعریف تخصصی چیه؟ شما متدی رو تو کلاس پدر تعریف می کنید و داخل فرزند ها می تونید رفتار اون متد رو تغییر بدید! حالا تو سناریو های مختلف کاربرد Polymorphism متفاوت هست.
در مورد شیوه پیاده سازی هم علاوه بر متدهای virtual و override کردن، میشه از قابلیت Interface ها هم برای پیاده سازی Polymorphism استفاده کرد.
سلام به شما دوست عزیز اگه برای چند ریختی مثال بزنیم میشه گفت:
فرض کنید شما میتونید رانندگی کنید حالا این رانندگی هستش که مهمه شما وقتی رانندگی رو یادبگیرید با ماشینای دیگه هم میتونید برونید
موفق سربلند باشید
سلامی دوباره، ممنون آقای احمدی فقط خدمتتون عرض کنم که من بعلاوه اینکه از فیلم های آموزش مقدماتی سی شارپ شما استفاده می کنم، همیشه مطالب این لینک رو هم مطالعه می کنم. فقط یه سری ابهام در رابطه با همین موضوع در ذهنم پیش اومده بود که حل شد.
فقط سوال آخرم اینه که آیا بحث overloading (مثلا Method Overloading) هم جزو مفهوم چندریختی هستش یا خیر؟
و یک سوال دیگه هم اینکه آیا این تعریف برای مبحث چندریختی درست هستش یا خیر:
چند ریختی عبارت است است بازنویسی و بازتعریف یا به عبارتی تغییر رفتار ها و همچنین خصوصیات کلاس والد در کلاس های فرزند.
به عبارت دیگر چند ریختی بیانگر این است که میتوان رفتار یا خصوصیتی که در کلاس والد تعریف شده است را، در کلاس های فرزند بازنویسی کرد و تغییر داد
ممنونم
سلام مجدد، در مورد مبحث Overloading کاملاً با مبحث Polymorphism متفاوت هست، مبحث Method Overloading یعنی شما می تونید چندین متد همنام با Signature های متفاوت داشته باشید. در مورد تعریف Polymorphism هم دقیقاً درست گفتید و تعریف شما تعریف درستی هست.
دوستان منظور من رو متوجه نشدید، یک بار دیگه سوال رو بخونید
کسی اگه میدونه جواب بده