Sobes.tech
Junior

Programlamada çok biçimlilik nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Polimorfizm, farklı sınıflardan nesnelerin aynı yöntem çağrısına farklı şekilde yanıt verme yeteneğidir. Bu, kalıtım, soyut sınıflar ve arayüzler kullanılarak elde edilir. C#'ta polimorfizm, temel sınıfın yöntemlerinin türetilmiş sınıflarda yeniden tanımlanması (overriding) ve yöntemlerin aşırı yüklenmesi (overloading) yoluyla gösterilir.

Polimorfizme örnekler:

  1. Yöntemlerin yeniden tanımlanması (Çalışma zamanında Polimorfizm): Türetici sınıf, temel sınıfta bildirilen bir yöntemin kendi uygulamasını sağlar. Bunun için temel sınıfta virtual anahtar kelimesi kullanılır, türetilmiş sınıfta ise override.

    // Temel sınıf
    class Shape
    {
        // Yeniden tanımlanabilir sanal yöntem
        public virtual void Draw()
        {
            // Varsayılan uygulama
        }
    }
    
    // Türetici sınıf 1
    class Circle : Shape
    {
        // Draw yönteminin yeniden tanımlanması
        public override void Draw()
        {
            // Daire için uygulama
        }
    }
    
    // Türetici sınıf 2
    class Square : Shape
    {
        // Draw yönteminin yeniden tanımlanması
        public override void Draw()
        {
            // Kare için uygulama
        }
    }
    

    Bu durumda, Shape nesnelerinin bir listesi oluşturulabilir ve her biri için Draw yöntemi çağrılabilir; ve her şekil türü için özgü uygulama çağrılır.

  2. Yöntemlerin aşırı yüklenmesi (Derleme zamanında Polimorfizm): Aynı isimde, farklı imzaya sahip (parametre sayısı veya türleri) birden çok yöntem, aynı sınıfta.

    class Calculator
    {
        // Aşırı yüklenmiş Add yöntemi (int için)
        public int Add(int x, int y)
        {
            return x + y;
        }
    
        // Aşırı yüklenmiş Add yöntemi (double için)
        public double Add(double x, double y)
        {
            return x + y;
        }
    }
    

Polimorfizm, daha esnek, genişletilebilir ve bakımı kolay kod oluşturmayı teşvik eder. Farklı türde nesnelerle çalışabilen genel kod yazmaya olanak tanır.