Çok Biçimlilik (PolyMorphism)

Polymorphisim Yunanca bir kelimedir. Poly çok , Morphisim biçimlilik demektir. Adında belli olacağı gibi , polimorfik nesneler birden fazla göre sahip olurlar.

Yani kısaca anlatmak gerekirse ,çok biçimlilik bazı kodalrın bir biri ile ilgili birden fazla kod için çalışması olayıdır. Birde şöyle açıklayalım diyelimki siz tam sayı (int) değişkenleri toplamak için bir sistem yaptınız, eğer siz bu sistemde ondalıklı ifade toplamak isterseniz hata alırsınız ama tüm işlemlere uygun bir proje yazarsanız böyle bir sıkıntı kalmayacaktır .Çok biçimlilik işte budur.



Aşşağdaki kodu incelersek daha iyi anlarız.

class dersler
{
    public virtual void AnaDers()
    {
        Console.WriteLine("insolitax web sayfası");
    }
}

class csharp:dersler
{
    public override void AnaDers()
    {
        Console.WriteLine("c# dersleri");
    }
}

class python:dersler
{
    public override void AnaDers()
    {
        Console.WriteLine("python dersleri");
    }
}

şeklinde bir kod yazdık şimdi aklımızda bazı sorular kalmış olabilir şimdi bunlara bakacağız.

Yukardaki örnekte virtual anahtar kelimesi ile tanımlanan dersler metodu türetilmiş sınıflardan ovirreide anahtar kelimesi ile tanımlanarak kodları ddeğiştirilmektedir.

- Şimdi şu kelimelerin detayına bakalım:

Temel sınıftan türetilmiş sınıflara aktarılan metotları her zaman olduğu gibi kullanmayız. Bu metotları türetilmiş sınıf içerisinde yeniden tanımlayabilmek için virtual ve override anahtar sözcüklerini kullanırız.

Virtual metotlar kalıtım yolu ile aktarıldıkları sınıfların içerisinde override edilerek değiştirilebilirler. Eğer override edilmezlerse temel sınıf içerisinde tanımlandıkları şekilde çalışırlar.

virtual : gerçek , asıl anlamına gelir.
override : bir çok anlamı bulunmaktadır fakat yazılım dilinde ağır basan yani diğerindeki özelliği alan .

Devam edelim:

Eğer farkettiyseniz kodu yazarken public override yazdıkdan sonra bize otomatik doldurma yardım etmek istedi, eğer tab tuşuna basarsak şöyle bir kod göreceğiz:

public override void AnaDers()
{
    base.AnaDers();
}

burdaki base kelimesi ana anlamına gelektedir ana özelliğine(elemanına) AnaDers sınıfından geldiğini gösterir. base Anahtar Sözcüğü:
Türetilmiş sınıf içerisinden temel sınıfın elemanlarına erişmek için base anahtar sözcüğünü kullanırız.

şimdi main kısmına gelelim.

static void Main(string[] args)
{
    dersler c = new csharp();
    c.AnaDers();

    dersler p = new python();
    p.AnaDers();

    Console.ReadKey();
}

şeklinde bir kod bloğu yazdık farkettiğiniz gibi new leme işlemi yaparken csharp ve python class(sınıflarına) da eriştik ve elemanını(içindeki kodu) yazıdrdık.

Yukarı Çık