this Referansı – Java

this Referans Kelimesi
class’lar arası ilişkiler konusunun bir parçası olarak ele alınması gereken bir konu da,
Java programlarda kullanılan bir referans sözcük olan this kelimesidir. Bu, “reserved word” denilen sözcüklerden biridir.
Bu sözcük, bir class’ın kendini ifade etmesine(kendisini çağırmasına, isimlendirmesine) izin verir. static konusunda anlattığım gibi,
static olmayan bir method veya değişken, objeler üzerinden çağrılır. (Yani className.methodName() diyemeyiz static değilse).
Bu metodun içinde, this referansı o anda işlem yapılan objeyi işaret eder.
Örneğin, Boyut isimli bir class’ın içinde artir(Boyut sukadar) diye bir method olsun.
–>          this.hacim+=sukadar.hacim;
Bu örnekte, this referansı, hangi objeye ait olan “hacim”in değiştirildiğini daha açık,anlaşılır ifade etmek için kullanılmıştır.
Mesela aşağıdaki satırda, artir() metodu hangi obje üzerinden çağrılmışsa, this ifadesi onu işaret eder. Yani sürahideki suyu:
–>          sürahidekiSu.artir(suKadar);
Ama eğer biz bu metodu başka bir obje üzerinden çağırırsak, bu sefer this referansı o objeyi ifade eder. Yani bu sefer farklı bir obje olan bardaktaki suyu:
–>          bardaktakiSu.artir(suKadar);
Genellikle this referansı, constructor’daki parametreler ile class’a ait değişkenlerin karışmaması için kullanılır. Örneğin, Hesap isimli bir class’ımız olsun.
–>
public Hesap(String sahip,long hesap,double para){
isim=sahip;
hesapNo=hesap;
bakiye=para;
}

Biz böyle durumlarda this referansını bilmiyorken, yukarıdaki gibi yazıyorduk. Bu da eş anlamlı sözcük bulma, bir sürü farklı değişkenle uğraşma gibi problemler oluşturuyordu.
this referansıyla bu method’u söyle yazabilirdik:
–>
public Hesap(String isim,long hesapNo,double bakiye){
this.isim=isim;
this.hesapNo=hesapNo;
this.bakiye=bakiye;
}

Constuctor’un bu halinde, this referansı, class’ı ifade eder. Yani burada static metodlarda olduğu gibi ulaşmış oluyoruz. this.değişkenİsmi dediğimizde local veya parametre değişkenleri
dikkate alınmaz, class seviyesindeki değişkenler alınır.
this kelimesinin en belirgin kullanımı budur.
Başka bir kullanımı da constructor çağırma metodlarıdır. Bildiğiniz gibi, class içinde birkaç tane constructor olabilir. Siz bunları birbirine yönlendirmek durumunda kalırsanız, bunu this
referansı kullanarak yapmak zorundasınız. Benim yazacağım örnek, biraz daha basit kaldığı için size çok işe yarar gelmeyebilir. Ama içinde bulunduğunuz duruma göre diğer constructor’ları
çağırmanız gerektiğinde aşağıdaki gibi this() kullanmanız gerekir. Burada da kullanmak aslında mantıklı çünkü mesela ben aynı şeyleri tekrar tekrar yazmak istemiyorum. Burada
aritmetik ve geometrik ortalamayı bulmak için tekrar tekrar yazmak istemedim. Sizin bulunduğunuz durumda daha büyük problemler doğuracak olabilir. Uğraşmak istemezseniz bunu kullanmak
zorunda kalabilirsiniz.

output:

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s