polymorphism (چند ریختی) در #C

در این مقاله با بحث چند ریختی در زبان #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();  
        }  
    }