CodeBlanks Logo Icon CodeBlanks

Yapıcı overloading

Aynı sınıfta birden çok yapıcı tanımlamayı öğrenirsin.

Yapıcı overloading

Bir sınıfta birden çok yapıcı tanımlayabilirsin; buna overloading (aşırı yükleme) denir. Her yapıcının parametre imzası farklı olmalıdır: farklı sayıda parametre ya da farklı türler.

Örnek: Order sınıfında hem public Order() hem public Order(string customer) olabilir. Çağrıya göre derleyici doğru yapıcıyı seçer. Bu, çağıran tarafa esneklik sunar: gerekli bilgisi olan detaylı, olmayan basit çağrı yapar.

Çözümleme (resolution)

new yazdığında derleyici verdiğin argümanları her yapıcının parametre imzasıyla karşılaştırır ve tek eşleşeni seçer. new Order("Ayşe") çağrısı string alan yapıcıya gider.

Eğer hiçbir yapıcı uymazsa derleme hatası alırsın. Eğer birden çok yapıcı uyuyor ama belirsizse yine hata alırsın; örneğin int ve double parametreli iki yapıcı varken new Sample(5) belirsiz olabilir. İmzaları net tutmak bu durumu önler.

Uygulama Order sınıfına iki overload yapıcı ekle

Order sınıfına public string Customer { get; set; } ve public int Items { get; set; } özelliklerini ekle. İki yapıcı tanımla: birincisi parametresiz, gövdede Customer = "Bilinmiyor"; Items = 0; ata. İkincisi string customer ve int items alsın ve bunları özelliklere atasın. Main içinde new Order("Ayşe", 3) ile örnek oluştur ve Customer'ı yazdır.

Başlangıç kodu

Program.cs
using System;

class Order
{
    // Özellikler ve iki overload yapıcı
}

class Program
{
    static void Main()
    {
        // Order örneği oluştur ve Customer'ı yazdır
    }
}

Örnek çözüm

Program.cs
using System;

class Order
{
    public string Customer { get; set; }
    public int Items { get; set; }

    public Order()
    {
        Customer = "Bilinmiyor";
        Items = 0;
    }

    public Order(string customer, int items)
    {
        Customer = customer;
        Items = items;
    }
}

class Program
{
    static void Main()
    {
        Order o = new Order("Ayşe", 3);
        Console.WriteLine(o.Customer);
    }
}

Beklenen çıktı

Ayşe

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Çağrıyı yapıcıya eşle

Kavram Anlamı
new Order() Parametresiz yapıcı
new Order("Ayşe") Tek parametreli yapıcı
new Order("Ayşe", 3) İki parametreli yapıcı
Order() Yalnızca çağrı değil

2 Overload çağrısını tamamla

Soru
Order o = new Order("____", 3);
Cevap
Order o = new Order("Ayşe", 3);

Açıklama: İki parametreli yapıcıya "Ayşe" ve 3 geçer.

3 İki yapıcı ne zaman overload sayılır?

  • Aynı parametreler, farklı isim
  • Farklı parametre imzası Doğru cevap
  • Farklı erişim belirleyici
  • Aynı gövde

Açıklama: Overloading için parametre imzası farklı olmalıdır.

Orta seviye bölümündeki tüm dersler