Java Constructor (Yapıcı Metot) Nedir? Kuralları ve Örnekleri

İngilizce'ye Geç
Kısa Özet: Java Constructor Nedir?

Constructor (Yapıcı Metot), Java'da bir sınıftan new anahtar kelimesi ile nesne oluşturulduğu anda otomatik olarak tetiklenen özel bir yapıdır. Constructor'ların temel amacı, yeni oluşturulan nesnenin başlangıç değerlerini (değişken atamalarını) yapmaktır. Sınıf ile birebir aynı isme sahip olmalı ve kesinlikle bir geri dönüş tipi (void dahil) barındırmamalıdır.

Nesne Yönelimli Programlamanın (OOP) kalbinde sınıflar (class) ve nesneler (object) yatar. Bir nesneyi bellekte (Heap) var ettiğiniz ilk milisaniyede çalışan koda ise Constructor (Yapıcı Metot) denir.

İlgili İçerik: Constructor içinde değişkenlere değer atarken aritmetik veya atama işlemlerinin nasıl çalıştığını pekiştirmek isterseniz Java Operatörleri Rehberimize mutlaka göz atın.

1. Java Constructor Nedir?

Java’da new anahtar kelimesiyle bir nesne yarattığınızda, sınıfa ait constructor perde arkasında otomatik olarak çalışır. Siz özel olarak bir constructor yazmasanız bile, Java derleyicisi (Compiler) kodunuza görünmez bir Varsayılan (Default) Constructor ekler.

2. Constructor ile Metot Arasındaki Farklar

Yapıcı metotlar isim olarak normal metotlara benzese de davranış olarak tamamen farklıdır:

  • Geri Dönüş Tipi Yoktur: Normal metotlarda void, int, String vb. dönüş tipleri vardır, constructor'da kesinlikle olmaz.
  • İsimlendirme: Constructor ismi her zaman sınıf adıyla birebir aynı olmak zorundadır. (Büyük/küçük harf duyarlıdır).
  • Tetiklenme: Normal metotları siz çağırırsınız (Örn: nesne.calis()). Constructor ise new dendiği an bir kez otomatik çalışır.

3. Parametreli ve Parametresiz Constructor

Sınıfınız yaratılırken dışarıdan veri isteyebilir (Parametreli) veya varsayılan değerlerle (Parametresiz) doğabilir.

class Personel {
    String isim;
    int yas;

    // Parametreli Constructor
    Personel(String isim, int yas) {
        this.isim = isim;
        this.yas = yas;
    }
}
Kritik Uyarı: Yukarıdaki sınıfta sadece parametreli bir constructor yazdığımız için, Java artık bize ücretsiz "Default Constructor" sağlamaz. Aşağıdaki gibi boş bir nesne yaratmaya çalışırsanız derleme hatası (Compile Error) alırsınız:
// HATA! Parametresiz constructor silindi.
Personel p1 = new Personel(); 

// Doğru Kullanım:
Personel p2 = new Personel("Ali", 30);

4. Constructor’ların Çalışma Sırası (Kalıtım / Inheritance)

Java’da kalıtım (extends) varsa, constructor’lar zincirleme çalışır. Bir nesne yaratıldığında her zaman en üstteki ata sınıftan (Parent/Super class) başlanarak aşağıya doğru bir yapılandırma dizisi izlenir.

class A {
    A() { System.out.println("A Constructor"); }
}

class B extends A {
    B() { System.out.println("B Constructor"); }
}

// new B(); çalıştırıldığında çıktı:
// A Constructor
// B Constructor

5. Kesin Java Constructor Kuralları

  • Geri dönüş tipi olamaz (void bile yazılamaz).
  • İsim, bulunduğu sınıf ismiyle birebir aynı olmalıdır.
  • İlk satırında gizli veya açık şekilde super() (üst sınıfı çağırma) veya this() (aynı sınıftaki diğer constructor'ı çağırma) barındırır.
  • Constructor override edilemez (ezilemez). Ancak parametreler değiştirilerek overload edilebilir (aşırı yüklenebilir).
  • Interface'lerin (Arayüzlerin) constructor'ı yoktur çünkü onlardan nesne üretilemez.

6. Yanlış ve Doğru Kullanım Örnekleri

Yanlış Kullanım (En Sık Yapılan Hata)

class Araba {
    // Başına void yazdığınız an bu bir Constructor DEĞİLDİR!
    // Sıradan, kötü isimlendirilmiş bir metot haline gelir.
    void Araba() { 
        System.out.println("Ben bir metodum.");
    } 
}

Doğru Kullanım

class Araba {
    // Doğru Constructor (Void yok, sınıf adıyla aynı)
    Araba() { 
        System.out.println("Araba nesnesi üretildi.");
    } 
}

7. Default Constructor Ne Zaman Oluşur?

Eğer sınıfınızın içine hiçbir constructor yazmazsanız, Java arka planda sizin için içi boş, parametresiz bir constructor yaratır. Buna Default Constructor denir. Ancak sınıfınıza kendiniz herhangi bir constructor (ister parametreli, ister parametresiz) eklerseniz, Java bu jesti yapmayı bırakır.

8. Kalıtımda super() Kullanımı

Eğer miras aldığınız üst sınıfın (Parent) constructor'ı dışarıdan parametre bekliyorsa, alt sınıfın constructor'ı içinde super(...) komutunu kullanarak o parametreyi zorunlu olarak yukarıya göndermelisiniz.

class Canli {
    Canli(String isim) { }
}

class Insan extends Canli {
    Insan() {
        // Üst sınıf parametre istediği için bu satır zorunludur!
        super("Ali"); 
    }
}

9. Sık Sorulan Sorular (SSS)

Constructor içinde "return" kullanılabilir mi?

Evet, kullanılabilir. Ancak constructor bir değer döndüremeyeceği için yalnızca nesne yaratımını erken sonlandırmak (break mantığı) amacıyla içi boş bir return; ifadesi yazılabilir.

Constructor Overloading (Aşırı Yükleme) ne demektir?

Bir sınıf içerisinde, parametre tipleri veya parametre sayıları farklı olmak şartıyla birden fazla constructor yazabilme işlemidir. (Örn: Hem boş bir Personel(), hem de isim ve yaş alan bir Personel(String, int) constructor'ı yazmak).

Sonuç

Bu rehberde, Java'da nesnelerin varoluş noktası olan Constructor (Yapıcı Metot) kavramını tüm detaylarıyla inceledik. Özellikle Spring Boot gibi framework'lerde sıkça kullanılan "Constructor Injection" (Bağımlılık Enjeksiyonu) mimarisini anlamak için, yapıcı metotların kurallarını ve çalışma sıralarını kusursuz bilmek şarttır.

Etiketler: java constructor, java oop, yapıcı metot, java super kullanımı, java kalıtım

Java dersleri ve güncel yazılım içerikleri için bizi takip etmeye devam edin. İçeriklerimiz faydalı olduysa bir çay/kahve ısmarlayarak destek olabilirsiniz! ☕

Latest Software Developers - Yazılım Blog Yazarı Profil Resmi

Yazar

LatestSoftwareDevelopers

Güncel yazılım teknolojilerinin takip edildiği blog.

Java ile ilgili yorumlar

Yorum Paylaş

EMail Zorunlu alanlar * *