Java Constructor Nedir? Yapıcı Metot Kuralları ve Örnekler
Bu yazıda Java constructor kavramını detaylı şekilde inceleyeceğiz.
Yapıcı metot nedir, nasıl tanımlanır, metotlardan farkı nedir,
super() ve this() nasıl kullanılır gibi en çok sorulan sorulara örneklerle yanıt vereceğiz.
Java Constructor Nedir?
Java’da constructor, bir sınıftan nesne oluşturulurken çalışan özel bir yapıdır. Her yeni nesne üretildiğinde constructor otomatik olarak çağrılır. Eğer siz constructor tanımlamazsanız, Java derleyicisi sizin için varsayılan constructor (default constructor) ekler.
Basit Constructor Örneği
class Kitap {
protected Kitap() {
// Constructor bloğu
}
protected void romanOku() {
// Normal metot
}
}
Burada Kitap() bir constructor’dır.
Çünkü sınıf adıyla aynıdır ve herhangi bir dönüş tipi içermez.
Constructor ile Metot Arasındaki Farklar
- Constructor’ların dönüş tipi olmaz,
voidbile yazılmaz - Sınıf adıyla aynı isme sahip olmak zorundadır
static,finalveyaabstractolamazpublic,private,protectedgibi erişim belirteçleri ile tanımlanabilir- Sadece nesne oluşturulurken çağrılır
Legal ve Illegal Constructor Örnekleri
class Kitap2 {
// Geçerli constructor'lar
Kitap2() { }
private Kitap2(byte b) { }
Kitap2(int x) { }
Kitap2(int x, int... y) { }
// Geçersiz örnekler
void Kitap2() { } // Metot, constructor değil
Kitap() { } // Hatalı isim
Kitap2(short s); // Soyut metot gibi yazılamaz
static Kitap2(float f) { } // static olamaz
final Kitap2(long x) { } // final olamaz
abstract Kitap2(char c) { } // abstract olamaz
Kitap2(int... x, int t) { } // Var-args sonda olmalı
}
Default Constructor Nedir?
Eğer sınıfta hiç constructor tanımlanmazsa, Java derleyicisi otomatik olarak bir default constructor ekler.
- Parametresizdir
- Sınıfla aynı erişim belirtecine sahiptir
- Arka planda
super()çağrısı içerir
Ancak sınıfta en az bir constructor tanımlarsanız, Java artık otomatik default constructor eklemez.
Parametreli Constructor Nedir?
Parametreli constructor, nesne oluşturulurken başlangıç değerlerinin dışarıdan verilmesini sağlar. Bu yapı, nesnenin daha kontrollü ve anlamlı şekilde oluşturulmasına yardımcı olur.
class Ogrenci {
String ad;
Ogrenci(String ad) {
this.ad = ad;
}
}
Bu örnekte nesne oluşturulurken öğrencinin adı doğrudan constructor üzerinden verilir.
super() Kullanımı
Bir alt sınıf constructor’ı içinde, üst sınıfın constructor’ını çağırmak için
super() kullanılır.
Bu çağrı constructor içinde ilk satırda olmalıdır.
class Arac {
Arac(String ad) {
// Parametreli constructor
}
}
class Otomobil extends Arac {
Otomobil() {
super(); // HATA
}
}
Burada hata oluşur çünkü Arac sınıfında parametresiz constructor yoktur.
Bu yüzden alt sınıf uygun parametre ile çağrı yapmak zorundadır.
Doğru Kullanım
class Arac {
Arac(String ad) {
System.out.println(ad);
}
}
class Otomobil extends Arac {
Otomobil() {
super("Otomobil");
}
}
this() Kullanımı
Aynı sınıf içindeki başka bir constructor’ı çağırmak için this() kullanılır.
Bu da constructor içinde ilk satırda yer almalıdır.
class Kitap {
String ad;
int sayfa;
Kitap() {
this("Bilinmiyor", 0);
}
Kitap(String ad, int sayfa) {
this.ad = ad;
this.sayfa = sayfa;
}
}
Böylece constructor tekrarını azaltabilir ve daha temiz kod yazabilirsiniz.
Constructor Overloading
Java’da constructor’lar da overload edilebilir. Yani aynı sınıfta farklı parametre listelerine sahip birden fazla constructor tanımlayabilirsiniz.
class Kullanici {
Kullanici() { }
Kullanici(String ad) { }
Kullanici(String ad, int yas) { }
}
Bu yapı farklı başlangıç senaryoları için esneklik sağlar.
Constructor Kullanırken Dikkat Edilmesi Gerekenler
- Constructor adı sınıf adı ile birebir aynı olmalıdır
- Dönüş tipi olmamalıdır
super()vethis()ilk satırda olmalıdır- Constructor’lar static, final veya abstract olamaz
- Bir sınıfta constructor tanımlarsanız otomatik default constructor gelmez
Sık Sorulan Sorular
Java constructor nedir?
Constructor, bir sınıftan nesne oluşturulurken otomatik çalışan özel yapıdır.
Constructor ile metot arasındaki fark nedir?
Constructor dönüş tipi içermez ve nesne oluşturulurken çağrılır. Metot ise normal davranış tanımlar.
Default constructor nedir?
Sınıfta constructor yoksa Java tarafından otomatik eklenen parametresiz constructor’dır.
super() ne işe yarar?
Alt sınıftan üst sınıf constructor’ını çağırmak için kullanılır.
this() ne işe yarar?
Aynı sınıf içindeki başka bir constructor’ı çağırmak için kullanılır.
Sonuç
Java constructor konusu, nesne yönelimli programlamanın temel taşlarından biridir. Constructor mantığını doğru anlamak; nesne oluşturma sürecini kontrol etmeyi, daha temiz kod yazmayı ve sınıf tasarımını daha güçlü hale getirmeyi sağlar.
Özellikle default constructor, parametreli constructor,
super() ve this() kullanımı Java öğrenen herkesin sağlam oturtması gereken konular arasındadır.