Constructor (Yapıcı Metotlar): Default ve Parametreli Constructor Farkı

crazy_coder

Moderatör
Katılım
20 Şub 2026
Mesajlar
204
Tepkime puanı
0
Puanları
16
Constructor: Nesnelerin Doğum Belgesi



1. Constructor Nedir ve Kuralları Nelerdir?​


Bir metodun Constructor olabilmesi için iki temel şart vardır:

İsmi, sınıf ismi ile birebir aynı olmalıdır.

Dönüş tipi (return type) olamaz (Hatta void bile yazılamaz).

2. Default (Varsayılan) Constructor​


Eğer sınıfınızda hiçbir constructor tanımlamazsanız, Java arka planda sizin yerinize boş bir constructor oluşturur. Buna Default Constructor denir.

Görevi: Nesneyi sadece oluşturur, değişkenlere varsayılan değerlerini atar (sayılar için 0, nesneler için null).

Dikkat: Eğer siz kendiniz herhangi bir constructor yazarsanız, Java bu otomatik "default" constructor'ı sağlamayı durdurur.

Java:
class Kitap {
String isim;
// Burada constructor yok, ama Java "Kitap()" şeklinde bir tane varmış gibi davranır.
}

Kitap k1 = new Kitap(); // Default constructor çalışır.

3. Parametreli Constructor​


Nesne oluşturulurken ona belirli değerler vermek istediğimizde kullanılır. Bu, nesnenin daha "doğarken" kimlik kazanmasını sağlar.

Java:
class Kitap {
String isim;
int sayfaSayisi;

// Parametreli Constructor
Kitap(String isim, int sayfaSayisi) {
    this.isim = isim;
    this.sayfaSayisi = sayfaSayisi;
}

}

// Nesne artık bu bilgilerle doğuyor
Kitap k2 = new Kitap("Sefiller", 1200);

4. Temel Farklar: Default vs. Parametreli​


ÖzellikDefault ConstructorParametreli Constructor
TanımlamaGeliştirici yazmazsa Java tarafından eklenir.Geliştirici tarafından manuel yazılır.
ArgümanlarParametre almaz.En az bir parametre alır.
AmaçNesneyi boş/varsayılan değerlerle başlatır.Nesneyi özel değerlerle başlatır.
KontrolSıfır kontrol.Değerleri atarken kontrol (validation) yapılabilir.

5. Constructor Overloading (Aşırı Yükleme)​


Tıpkı metotlarda olduğu gibi, bir sınıfta birden fazla constructor bulunabilir. Bu, nesneyi farklı şekillerde oluşturmanıza imkan tanır.

Java:
class Kullanici {
String kullanıcıAdı;
String eposta;

// Sadece kullanıcı adı ile kayıt
Kullanici(String ad) { this.kullanıcıAdı = ad; }

// Hem ad hem eposta ile kayıt
Kullanici(String ad, String mail) { 
    this.kullanıcıAdı = ad; 
    this.eposta = mail; 
}

}



Sonuç

Constructor'lar, nesneye ilk can suyunu verdiğimiz yerdir. İyi bir tasarımda, bir nesnenin tutarsız (eksik veriyle) oluşmasını engellemek için parametreli constructor'lar ve this() anahtar kelimesi ile constructor zincirleme (chaining) sıklıkla kullanılır.
 
Geri
Üst