Constructors (Yapıcı Metotlar): this() ve base() Kullanımı

crazy_coder

Moderatör
Katılım
20 Şub 2026
Mesajlar
204
Tepkime puanı
0
Puanları
16

C# Yapıcı Metotlar (Constructors): this() ve base() ile Profesyonel Nesne Yönetimi​


Bir sınıftan nesne üretildiğinde (new anahtar kelimesi kullanıldığında) çalışan özel metotlara Constructor (Yapıcı Metot) diyoruz. C#'ta yapıcı metotlar sadece ilk değer atamakla kalmaz, aynı zamanda sınıflar arası hiyerarşiyi ve kod akışını da yönetir.



1. Constructor Nedir? Temel Kurallar​



  • []Sınıf ismi ile aynı isme sahip olmalıdır.
    []Geri dönüş tipi (void dahil) yoktur.
  • Bir sınıfta birden fazla yapıcı metot olabilir (Overloading).

C#:
public class Kullanici
{
public string Ad { get; set; }

// Default Constructor
public Kullanici() 
{
    Console.WriteLine("Yeni bir kullanıcı nesnesi oluşturuldu.");
}

}



2. this() Kullanımı: Kendi İçindeki Yapıcıları Çağırmak​


Bazen bir sınıfın içinde birden fazla yapıcı metot vardır ve birini çağırdığınızda diğerinin de çalışmasını istersiniz. Kod tekrarını önlemek için this() anahtar kelimesini kullanırız. Buna "Constructor Chaining" (Yapıcı Zincirleme) denir.

C#:
public class Siparis
{
public int Id { get; set; }
public DateTime Tarih { get; set; }

// Ana yapıcı metot
public Siparis(int id)
{
    this.Id = id;
    this.Tarih = DateTime.Now;
}

// Parametresiz yapıcı, ana yapıcıyı çağırıyor
public Siparis() : this(0) // Önce yukarıdaki id alan metodu çalıştırır
{
    Console.WriteLine("Varsayılan ID ile sipariş oluşturuldu.");
}

}



3. base() Kullanımı: Üst Sınıfın Yapıcısını Çağırmak​


Kalıtım (Inheritance) söz konusu olduğunda, alt sınıfın (Child Class) nesnesi oluşturulurken mutlaka üst sınıfın (Base Class) yapıcısı da çalışmalıdır. Eğer üst sınıfta parametre alan bir yapıcı varsa, alt sınıf bunu base() ile beslemek zorundadır.

C#:
public class Personel
{
public string Isim { get; set; }

public Personel(string isim)
{
    this.Isim = isim;
}

}

public class Mudur : Personel
{
public string Departman { get; set; }

// base(isim) diyerek üst sınıftaki Personel(string isim) metoduna veriyi gönderiyoruz
public Mudur(string isim, string departman) : base(isim)
{
    this.Departman = departman;
}

}



this() vs base() Arasındaki Farklar​


Özellikthis()base()
Kimi Çağırır?Aynı sınıfın içindeki başka bir yapıcıyı.Miras alınan üst sınıfın yapıcısını.
AmaçAynı sınıfta kod tekrarını önlemek.Hiyerarşik veri aktarımı sağlamak.
Kullanım YeriMetot imzasından hemen sonra : this() şeklinde.Metot imzasından hemen sonra : base() şeklinde.



Önemli İpucu: Statik Yapıcılar (Static Constructors)​


Bir de static constructor yapısı vardır. Bu metot, sınıftan ilk nesne üretildiğinde veya sınıfa ilk kez erişildiğinde sadece bir kez çalışır. Nesne bazlı değil, sınıf bazlıdır. Parametre alamaz ve erişim belirleyicisi (public/private) yoktur.

C#:
static Siparis()
{
// Uygulama ömrü boyunca sadece 1 kez çalışır
Console.WriteLine("Sipariş sistemi başlatıldı.");
}



Sonuç​


Yapıcı metotlar, nesne yönelimli tasarımın kapı eşiğidir. this() ve base() kullanımına hakim olmak, sınıflarınız arasındaki veri akışını tertemiz bir hale getirir ve sizi her yapıcı metodun içine aynı kodları tekrar tekrar yazma zahmetinden kurtarır.
 
Geri
Üst