13 Aralık 2012 Perşembe

method ve constructor arasındaki fark


method ve constructor arasındaki fark nedir?

Constructor ve method arasında ana fark methodu açık bir şekilde/ doğrudan çağırmanız gerekirken, constructor'ı nesne oluşturuken dolaylı olarak çağırırsınız. Bunun anlamı Costructor'ın çağrılamayacağı değildir. Eğer "overloaded constructor (aynı class içinde birden fazla constructor-yapıcı- olması)"ınız varsa "this" anahtar kelimseni kullanarak onları çağırabilirsiniz. "super" anahtarını kullanarak super class'ın yapıcısını da çağırabilirsiniz. Eğer herhangi bir çağırma işlemi yapmazsanız Java derleyicisi tarafından bu işlem otomatik olarak yapılıyor. Bu işleme javada "constructor chaning-yapıcı zincirleme" deniliyor.

Benzerlikler :

1) İkisi de overloaded (aynı isimde birden fazla metod)veya overridden(tekrar yazılabilir -@override annotation'ını kullanır)

2) Constructor'ı public, protected, private tiplerinde yapabilirsin, method gibi.

Farklılıklar :

1) İlk farklılık, Constructor ismi içinde Class ismi ile aynı olmalıdır. Method'da ise böyle bir zorunluluk yoktur. Method'a istediğiniz herhangi bir isim verebilirsiniz.

2) Constructor herhangi bir type sahip olmadığı için geriye bir type döndürmez. Method ise istenilen type (String, BigDecimal ..vs) döndürebilir.

3) Constructor'lar zincirleme olarak çağrılabilir methodlarda böyle bir yapı yoktur.

4) Method'ların aksine, Constructor'lar alt classlar tarafından miras alınamazlar. Methodlar ise tipi "private" değilse miras alınabilirler. private Constructor'ın anlamı dışardan bşaka bir class'ın nesne oluşturmasını engellemektir. Bu ise Singleton pattern'in teknik özelliklerinden biridir.

5) Costructor'ı doğrudan çağırmak için "this" ve "super" kelimelerini kullanırsınız, method'da ise böyle birşey yok.

Daha ayrıntılı bilgi almak için aşağıdaki kaynağı kullanabilirsiniz.

Kaynak: Difference between method and constructor in Java

1 yorum:

  1. Yanlış bilgi değil mi constructor sadece public olmalıdır.

    YanıtlaSil