Javada this anahtar kelimesinin kullanımı

Java'da kullanılan yaygın anahtar kelimelerden birisi de this dir. Birçok yazılımcının kafasını karıştıran bu değişkenin ne amaçla ve nerelerde kullanılacağı hakkında bazı örneklerle bilgiler sunacağız. Çok fazla kullanım alanına sahip olmamasına rağmen akıllardaki soru işaretlerini gidermek amacıyla da bu makalemizi hazırlamış bulunuyoruz. Aslında this anahtar kelimesi üzerinde işlem yapılan nesnenin kendisini dönmektedir. Örnek verecek olursak bir sınıfta tanımlanan nesne değişkenlerine fonksiyonlar içerisinden erişimde kullanılabilinmektedir.

Çoğunlukla bir metodda tanımlanan aynı isme sahip değişken ile nesne değişkenini ayırt etmekte kullanılmaktadır. Örnek verecek olursak;
  1. package com.yazilimdersi.info.thiskullanimi; 
    
    public class Urun{ 
    
        private String urunadi;
        private String marka;
        private String model;
    
        public Urun(String urunadi, String marka, String model) { 
            this.urunadi= urunadi; 
            this.marka = marka; 
            this.model = model;
        } 
    }
Yukarıda bulunan Urun sınıfına bağlı urunadi, marka ve model nesne değişkenleri bulunmaktadır. Bu değişkenlere ait verileri setlemek amacıyla initialize (yapıcı) metodunda da parametreler aynı isimle girilmiş. Burada setleme yapıldığında gelen parametrik değerin nesneye atanması için this kullanımı gerekmektedir. this anahtar kelimesi bizlere Urun sınıfına ait urunadi, marka ve model değişkenlerine erişimimizi sağlamaktadır. Eğer initialize (yapıcı) metodundaki parametreler farklı şekilde adlandırılsaydı, this kullanımına ihtiyaç olmayacaktı! Ama programın okunurluğu ve yapısı açısından this kullanımı kabul gören bir kullanım türüdür bu tip durumlarda. Yani eğer parametreler aşağıdaki şekilde nesne değişkenlerinden farklı isimlendirilseydi this kullanımına gerek kalmayacaktı aşağıdaki örnekte olduğu gibi:
  1. package com.yazilimdersi.info.thiskullanimi; 
    
    public class Urun{ 
    
        private String urunadi;
        private String marka;
        private String model;
    
        public Urun(String urunadiDegiskeni, String markaDegiskeni, String modelDegiskeni) { 
            urunadi= urunadiDegiskeni; 
            marka = markaDegiskeni; 
            model = modelDegiskeni;
        } 
    }
Diğer bir kullanım türü de direkt olarak metodların this anahtar kelimesi ile çağrılmasıdır. Aşağıdaki kodlama da this metodu kullanılarak hazırlanmış bir initialize metodu tetiklenebilmektedir:
  1. package com.yazilimdersi.info.thiskullanimi; 
    
    public class Urun{ 
    
        private String urunadi;
        private String marka;
        private String model;
        
        public Urun(String urunAdi) { 
            this(urunAdi, "FLOWMETRE", "FL 256");
        }
    
        public Urun(String urunadi, String marka, String model) { 
            this.urunadi= urunadi; 
            this.marka = marka; 
            this.model = model;
        } 
    
    }
Yukarıdaki kullanımda görüldüğü üzere tek parametre alan Urun initialize metodu 3 parametre alan diğer bir initialize metodunu direkt olarak this ifadesi ile çağırabilmektedir. Yaygın olarak kullanılan sadece bu tip durumlardır. 

Önemli bir konu da this anahtar kelimesini static metodlar içerisinde kullanamayız. Çünkü this kelimesi sınıfa ait nesnelerin oluşturulmasıyla bellekte yer tutmaktadır. 

comments powered by Disqus