Genel

JAVA’da This Anahtar Kelimesi Nedir, Ne işe yarar, Kullanımı

Artık nedir, ne işe yarar ve nasıl kullanılır kısmı açmanın vakti geldi. Bu kısımda this anahtar kelimesinin java ‘daki kullanımına ve ne olduğuna değineceğiz.

JAVA’da this nedir. Öncelikle Bununla başlamak istiyorum. Sonra nerelerde kullanırız, ne işe yarar ve en son örnek kodlar ile bitirmek istiyorum..

This Nedir, Ne işe Yarar –> Java’da bir metodun içinde o metodun ait olduğu sınıftan yaratılacak nesneyi veya o nesnenin bir alt değişkenini tanımlamamız gerektiğinde kullandığımız deyime this diyoruz.. Bulunduğumuz sınıfta nesne daha tanımlanmadığı için bu nesneyi direk olarak kullanamıyoruz. İşte this ile ait olduğu class içinde yaratılan methodlar o class’ın nesnesini kullanabilmektedir.Basit olarak söylemek gerekirse this anahtar kelimesi o anda hangi nesne üzerinde işlem yapılıyorsa o nesnenin referansını döndürür.

Üst tarafı daha da basite indirgeyerek anlatıcak olursam bir sınıf içerisindeki bir metota veya bir değişkene this ile erişebilir, çağırabilir ve kullanabiliriz. Kısaca this içerisinde bulunduğu nesneyi gösteren referanstır.

this anahtar kelimesini kullanarak aynı sınıf içinde diğer yapıcı methodlarıda çağırabilme yeteneğine sahibiz. Aşağıda örnekleri görebilirsiniz..

Unutmamamız gereken şey ise, this anahtar kelimesini static metodlar içerisinde kullanamayız. Çünkü this kelimesi sınıfa ait nesnelerin oluşturulmasıyla bellekte yer tutmaktadır.

This Kullanımı –> this.değisken_ismi şeklinde this deyimini kullanabiliriz..

Aşağıdaki örnekten başlayalım. Burada this kullanmadık. Şimdi this’i nerede kullanıyoruz. Öncelikle bu projeyi geliştirme ortamına kopyalayın. 2. işlem olarak class Ornek içindeki urunadi marka ve model’i constructor method’umuz olan örnek içinde nasıl kullanabiliriz düşünün. İşte burada this anahtar kelimesi devreye giriyor..

  public class Ornek{ 

 private String urunadi;
 private String marka;
 private String model;

 public Ornek(String urunadi, String marka, String model) { 
 urunadi= urunadi; 
 marka = marka; 
 model = model;
 System.out.println(urunadi + " " + marka + " " + model);
 } 
}

this’li kullanım ile fark’ı görebiliceksiniz..
public class Ornek{ 

    private String urunadi;
    private String marka;
    private String model;

    public Ornek(String urunadi, String marka, String model) { 
        this.urunadi= urunadi; 
        this.marka = marka; 
        this.model = model;
        System.out.println(urunadi + " " + marka + " " + model);
    } 
}

Ayrıca this anahtar kelimesini kullanarakaynı sınıf içerisindeki diğer yapıcı metotları da çağırabiliriz. Aşağıdaki kodu inceleyelim.
public class Ornek{ 

    private String urunadi;
    private String marka;
    private String model;

    public Ornek(){
    this("a","b","c");
    }
    public Ornek(String urunadi, String marka, String model) { 
        this.urunadi= urunadi; 
        this.marka = marka; 
        this.model = model;
        System.out.println(urunadi + " " + marka + " " + model);
    } 
}

Kodları main method’ta Ornek c=new Ornek(); olarak çalıştırabilirsiniz..

 

Burada önemli notları listeleyecek olursak;

  • this recursive olarak çağırılamaz. 2 constructor içerisinde this ‘i çağıramazsınız. en geniş olan this ‘i almanız gerekiyor.

{!{code}!}czo1NzY6XCJwdWJsaWMgVGhpc09ybmVnaSgpIHsNCiAgICBTeXN0ZW0ub3V0LnByaW50bG4oXFxcIsSwa2kga3VydWN1IHRoaXMo4oCmKXtbJiomXX0gaWxlIGthcsWfxLFsxLFrbMSxIG9sYXJhayBiaXJiaXJsZXJpbmkgw6dhxJ/EsXJhbWF6bGFyLlxcXCIgKw0KICAgICAgICAgICAgXFxcIntbJiomXX1yZWN1cnNpdmUgw6dhxJ/EsXLEsWxtYXPEsW5hIGl6aW4gdmVyaWxtZWRpxJ9pbmRlbiBoYXRhIGFsxLFuxLFyLsOWcm5layBpw6dpe1smKiZdfW4gaWxrIHlvcnVtIHNhdMSxcsSxXFxcIik7DQogICAvL3RoaXMoMSk7DQogICAgU3lzdGVtLm91dC5wcmludGxuKFxcXCJ0aGlzIGNvbnN0e1smKiZdfXJ1Y3RvciBcXFwnZGEgaWxrIMOnYcSfxLFyxLFsbWFsxLEgeW9rc2EgXFxcIiArDQogICAgICAgICAgICBcXFwiQ2FsbCB0byBcXFwndGhpcygpXFx7WyYqJl19XCcgbXVzdCBiZSBmaXJzdCBzdGF0ZW1lbnQgaW4gY29uc3RydWN0b3IgYm9keSBoYXRhc8SxIGFsxLFuxLFyLiBZb3J1bSBzYXTEsXJ7WyYqJl19xLFuxLEga2FsZMSxcmFiaWxpcnNpbi5cXFwiKTsNCiAgICBpbnQgYSA9IDU7DQogICAgLy90aGlzKGEpOw0KDQp9DQoNCnB1YmxpYyBUe1smKiZdfWhpc09ybmVnaShpbnQgaSkgew0KICAgIHRoaXMoKTsNCiAgICB0aGlzLmkgPSBpOw0KfVwiO3tbJiomXX0={!{/code}!}

 

  • static ile this kullanılamaz.

/* static ile this kullanılmaz.
public static void staticThis(){
this.test(1,1);
}*/

  • constructor metotlar içerisinde this en geniş olanı çağıracak şekilde düzenlenmeli. Bunu yaparak DRY prensibine de uyuyoruz.

{!{code}!}czozMTM6XCJwdWJsaWMgY2xhc3MgVGhpc0NvbnRydWN0b3JDYWdpcm1hIHsNCiAgICANCiAgICBpbnQgYSA7DQogICAgaW50IGIgOw17WyYqJl19Cg0KICAgIHB1YmxpYyBUaGlzQ29udHJ1Y3RvckNhZ2lybWEoaW50IGEpIHsNCiAgICAgICAgdGhpcy5hID0gYTsNCiAgICB9DQoNCntbJiomXX0gICAgcHVibGljIFRoaXNDb250cnVjdG9yQ2FnaXJtYShpbnQgYSwgaW50IGIpIHsNCiAgICAgICAgdGhpcy5hID0gYTsNCiAgICAge1smKiZdfSAgIHRoaXMuYiA9IGI7DQogICAgfQ0KDQogICAgcHVibGljIFRoaXNDb250cnVjdG9yQ2FnaXJtYSgpew0KICAgICAgICB0aGlzKDF7WyYqJl19LDMpOw0KICAgIH0NCg0KfVwiO3tbJiomXX0={!{/code}!}

this ile ilgili örnekleri aşağıdaki github adresinden de inceleyebilirsiniz.

//github.com/umiitkose/java_examples/tree/master/src/com/umiitkose/thisKeyword


Konuyla ilgili eğitim olarak Akın Kaldıroğlu hocanın nesne programlama dersini de önermekteyim.

İyi Günler 🙂

Yazıların devamı gelmesini istiyorsanız ve beğendiyseniz yorum yaparsanız memnun kalırım..

9 thoughts on “JAVA’da This Anahtar Kelimesi Nedir, Ne işe yarar, Kullanımı

  • Mert Efe C.

    Güzel bilgilendirme olmuş kullanıyordum ama ne için kullandığımı bilmiyordum ezber yapmadığım için 😀

    Yanıtla
    • Ezber yerine bence örnek ile aklınızda rahatlıkla kalıyor 🙂

      Yanıtla
  • ozibuo

    Harika açıklama başka yerlerde anlamamamıştım süper oldu teşekkürler

    Yanıtla
  • Tugba

    Farkını bir ben göremedim:(

    Yanıtla
  • melike

    Çok anlaşılır bir yazı olmuş teşekkürler.

    Yanıtla
  • Nesrin

    Ben anlamadım. This yazınca a b c mi gelecek? Ne olacak? Bana sayısal bir örnek de verir misiniz? Mesela a+b işlemi yapılsın. This kullanılarak verilen sayılar ile sonuç bulunsun. Böyle bir kod yazar misiniz? Hiçbir halt bilmeyen biriyim 🙁

    Yanıtla
  • BESTE AKDİK

    hocam harikasınız. uzun can sıkıcı yazılar aksine kısa ve öz anlatımınız sayesinde sürekli yazılarınızı okuyorum. teşekkürler..

    Yanıtla
    • Beste Hanım,
      Güzel yorumunuz için teşekkür ederim. Faydalı olabiliyorsak ne mutlu bize 🙂

      Yanıtla

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir