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 تشکر