polymorphism (چند ریختی) در #C
دوشنبه 24 فروردین 1394در این مقاله با بحث چند ریختی در زبان #C و کارکرد آن آشنا میشویم
polymorphism :که به دو بخش تقسیم میشود , یک بخش poly به معنی تعداد میباشد و morph به معنی فرمها هستند. بنابراین polymorphism به معنی چندین فرم میباشد .در #C به معنی یک نام در چندینن فرم میباشد , اساساً این قابلیت برای یک شئی که قابلیت استفاده متعدد را دارد , می باشد .
انواع polymorphism :
- کامپایل کردن زمان polymorphism که اصطلاحا (static binding) نام دارد
- run time چند ریختی که اصطلاحاً (dynamic binding) نام دارد .
کامپایل کردن زمان polymorphism :
که در واقع به معنی overloading می باشد ,همانطور که شما می دانید , با استفاده از overloading , چندین متد با یک نام ایجاد می شود اگر چه هر پارامتر می تواند متفاوت باشد .مانند مثال زیر :
Using System; Public class myclass { Public int sum(int A, int B) { Return A + B; } Public float Sum(int A, float B) { Return A + B; } }
در مثال بالا یک متد با نام Sum در پارامترهای متفاوتی استفاده میشود که در پارامتر اول متغیر A و متغیر B از نوع int را دریافت می کند و در متد دوم یک متغیر از نوع Float با نام B و یک متغیر از نوع int با نام A دریافت میکند .
Runtime Polymorphism :
نام دیگر آن Dynamic Polymorphism میباشد .این نوع از چند ریختی ها برای مفاهیم بازنویسی(overridden) استفاده می شوند .بازنویسی به این معنا میباشد که در یک پارامتر میباشند , اما در اجرا متفاوت میباشند .در طول اجرای این متد می توانیم از متد ارث بری نیز استفاده کنیم و همچنین می توانیم از کلمات کلیدی "Virtual" و "Override" استفاده کنیم .بنا براین این نوع از چند ریختی ها late binding نیز نام دارند .به مثال زیر توجه فرمایید :
Using system; Class maruthi { Public virtual void Display() { Console.writeline(“maruthi car”); } } Class Esteem: Maruthi { Public override void Display() { Console.writeline(“Maruthi esteem”); } } class testcall { Public static void Main() { Maruthi m = new Maruthi(); m = new Esteem(); m.Display(); } }
- C#.net
- 12k بازدید
- 11 تشکر