Java'da Yapıcılar (Constructors): Nesneler Nasıl Oluşturulur ve Başlatılır?
Java'da bir sınıftan nesne oluşturduğunuzda, o nesnenin ilk anda hangi değerlere sahip olacağını belirlemek istersiniz. Bu iş için yapıcılar (constructors) kullanılır. Yapıcı, new anahtar sözcüğüyle nesne oluşturulduğu anda otomatik olarak çalışan özel bir metottur ve nesnenin başlangıç durumunu hazırlamak için kullanılır.
Yapıcıların Temel Özellikleri
- Yapıcının adı, içinde bulunduğu sınıfın adıyla birebir aynı olmalıdır.
- Yapıcı her zaman
newanahtar sözcüğü ile çağrılır; nesne oluştururken devreye girer. - Yapıcılar geriye değer döndürmez ve
voiddahil hiçbir dönüş tipi yazılmaz. - Parametreli veya parametresiz olarak tanımlanabilirler; aynı sınıfta birden fazla yapıcı bulunabilir.
Varsayılan (Parametresiz) Yapıcı
Bir sınıfa hiç yapıcı yazmazsanız Java, derleme sırasında sizin yerinize parametresiz bir varsayılan yapıcı ekler. Yapıcıyı kendiniz yazarsanız, nesneler artık sizin tanımladığınız kurala göre başlatılır:
class Urun {
int adet;
Urun() {
adet = 10; // nesne oluşur oluşmaz adet 10 olur
}
}
Urun urun1 = new Urun(); // parametresiz yapıcı çağrılır
Parametreli Yapıcı
Nesneyi oluştururken başlangıç değerini dışarıdan vermek istiyorsanız parametreli yapıcı yazarsınız:
class Urun {
int adet;
Urun(int adet) {
this.adet = adet; // parametre ile alan aynı adı taşıyabilir
}
}
Urun urun2 = new Urun(25);
Buradaki this anahtar sözcüğü, o an oluşturulan nesnenin alanını işaret eder ve parametreyle aynı ada sahip alan arasındaki karışıklığı önler.
Yapıcı Aşırı Yükleme (Overloading)
Aynı sınıfta parametre sayısı veya tipi farklı birden fazla yapıcı tanımlayabilirsiniz. Java, new ile verdiğiniz argümanlara göre uygun yapıcıyı seçer. Bu sayede aynı sınıftan hem varsayılan değerlerle hem de özel değerlerle nesne üretebilirsiniz.
Dikkat Edilmesi Gerekenler
- Parametreli bir yapıcı yazdıysanız Java artık varsayılan yapıcıyı otomatik eklemez; parametresiz kullanım gerekiyorsa onu da siz tanımlamalısınız.
- Yapıcı içinde çok ağır işler (dosya okuma, ağ çağrısı gibi) yapmaktan kaçının; nesne oluşturma maliyeti gereksiz artar.
- Bir yapıcı başka bir yapıcıyı
this(...)ile çağırarak tekrar eden başlangıç kodunu azaltabilir.
Sonuç
Yapıcılar, nesne yönelimli programlamanın temel yapı taşlarından biridir. Nesnenin tutarlı bir başlangıç durumuyla doğmasını sağlayarak hem hataları azaltır hem de kodu daha okunabilir kılar. Java ile kurumsal uygulama geliştirme ihtiyaçlarınız için bizimle iletişime geçebilirsiniz.