Java Constructor Nedir? Yapıcı Metotlar ve Nesne Oluşturma Rehberi
Java programlama dilinde constructor (yapıcı metot), bir sınıftan nesne oluşturulduğu anda otomatik çalışan özel yapılardır. Bu yazıda Java constructor nedir, parametreli/parametresiz constructor, constructor kuralları ve super() kullanımı gibi konuları örneklerle öğreneceksiniz.
Java Constructor Nedir?
Java’da new anahtar kelimesiyle bir nesne oluşturduğunuzda, sınıfa ait constructor otomatik olarak çalışır.
Constructor’ın temel amacı, nesne oluşturulurken sınıf değişkenlerine başlangıç değerleri atamaktır.
Not: Eğer bir sınıfta hiç constructor tanımlanmazsa, Java derleyicisi otomatik olarak varsayılan (default) constructor ekler.
Java’da Constructor Kullanımı
Aşağıdaki örnekte A sınıfına ait parametresiz constructor tanımlanmıştır:
class A {
A() {
// Constructor body
}
}
Constructor ile Metot Arasındaki Farklar
- Constructor’ın geri dönüş tipi yoktur.
- Constructor ismi sınıf adıyla birebir aynı olmalıdır.
- Nesne oluşturulurken otomatik çalışır.
- Normal metotlar gibi doğrudan çağrılamaz.
Parametreli ve Parametresiz Constructor
Constructor’lar parametreli veya parametresiz olabilir. Parametreli constructor örneği:
class A {
int boy;
String isim;
A(String isim, int boy) {
this.isim = isim;
this.boy = boy;
}
}
Bu sınıfta yalnızca parametreli constructor olduğu için aşağıdaki kullanım derlenmez:
A a = new A(); // Derleme hatası: Parametresiz constructor yok.
Doğru kullanım:
A a = new A("Ali", 180);
Constructor’ların Çalışma Sırası
Java’da kalıtım (inheritance) varsa constructor’lar zincir halinde çalışır ve çağrı sırası genellikle üst sınıftan alt sınıfa doğru tamamlanır.
class A extends Object {
A() { }
}
class B extends A {
B() { }
}
Bconstructor’ı çağrılır.B,Aconstructor’ını çağırır (super()).A,Objectconstructor’ını çağırır.- Değişkenlere varsayılan/açık değerler atanır.
- Constructor’lar sırasıyla tamamlanır.
Java Constructor Kuralları
- Constructor ismi sınıf ismiyle aynı olmalıdır.
- Geri dönüş tipi olmamalıdır.
- Constructor ilk satırda
super()veyathis()ile başlar. - Constructor override edilemez, ancak overload edilebilir.
- Bir sınıfta constructor yazılmazsa compiler default constructor ekler.
- Interface’lerin constructor’ı yoktur.
Constructor Örnekleri: Yanlış ve Doğru Kullanım
Yanlış Kullanım
class AA {
void AA() { } // Bu bir constructor değil, metottur!
}
Doğru Kullanım
class AA {
AA() { } // Bu bir constructor’dır.
}
Default Constructor Ne Zaman Oluşur?
Constructor yazılmazsa compiler otomatik olarak parametresiz constructor ekler:
class AA { }
Ancak sınıfta herhangi bir constructor tanımlanırsa compiler yeni bir constructor eklemez:
class AA {
AA(String ad) { }
}
super() Kullanımı
Üst sınıfın constructor’ı parametre alıyorsa, alt sınıfta super(parametre) şeklinde çağırmak zorunludur.
class AA {
AA(String ad) { }
}
class BB extends AA {
BB() {
super("Ali"); // Doğru kullanım
}
}