Java Dersleri – 21 – Erişim Belirteci ve Get-Set Kullanımı

By | 14 Eylül 2019

Erişim Belirteci ve Get-Set Kullanımı


Erişim Belirteci

Hatırlarsanız sınıf veya metot oluştururken başına public erişim belirtecini koyuyorduk.
Bazı erişim belirteçlerimiz var. Bunlar sayesinde sınıf, metot veya değişkenlerimizi belli yerlerden erişilmesine olanak sağlıyoruz.
public –> her yerden erişilebilir
protected –> sınıf, paket ve alt sınıftan erişilebilir
friendly (erişim belirteci olmayan) –> sınıf ve paket içerisinden erişilebilir
private –> sadece sınıf içerisinde erişilebilir

Bu dersin asıl amacı get ve set’i anlatmak ama erişim belirteci konusu ile bağlantısı olması sebebiyle birlikte şimdi anlattım. Anlatacaklarımız Encapsulation yani Kapsülleme dersimizin içeriği konumunda ama buna ayrı bir başlık çekmek istedim ve bu dersi hazırladım. Erişim belirteci konusuna şimdilik böyle küçük bir alan ayırdım ama ileride paket ve sınıf yapılarını iyice kavradıktan sonra erişim belirteçlerini tekrardan hatırlatınca tam olarak yerine oturacaktır.


Get ve Set

Şimdilik public ve private erişim belirtecini bir örnek üzerinden get ve set’i anlatmak için kullanalım.
Aşağıda gözüktüğü gibi bir Hayvan sınıfı oluşturduk ve Main.java içinde objemizi oluşturup sınıfımızın içindeki field’lara erişim hakkımız oldu. Yalnızca erişim hakkımız da değil. Değerlerini biz verdik. Yani hem eriştik hem de üzerinde değişiklik yaptık rahatlıkla.

Main.java dosyası

public class Main {
    public static void main(String[] args) {
        Hayvan hayvan = new Hayvan();
        hayvan.tur = "kuş";
        hayvan.cinsiyet = "dişi";
        hayvan.nufus = 10000000;
        
        System.out.println("türü : "+hayvan.tur+"\ncinsiyeti : "+hayvan.cinsiyet+"\nnüfusu : "+hayvan.nufus);
    }
}

Hayvan.java dosyası

public class Hayvan {
    public String tur;
    public String cinsiyet;
    public int nufus;
}

Field’lara baktığımızda başlarında public yazdığını görüyoruz. Bu sebepten rahatlıkla ulaştık ve üzerinde değişiklik yaptık. Peki public yerine private olsaydı ne olacaktı? Tabiki de ERROR!

Bu kısımda get ve set devreye giriyor.
get ile alıp ekrana basma imkanımız oluyor. Çalıştırma
set ile düzenleme hakkımız oluyor. Yani değerler verebiliyoruz.

Şimdi get ve set’i örnekler üzerinden sizlere aktarmaya çalışayım. Üstteki örneğimizde field’ların başındaki erişim belirteçlerinin private olduğunu varsayalım. Bu durumda ne yapmamamız lazım.

Hayvan.java dosyası

public class Hayvan {
    private String tur;
    private String cinsiyet;
    private int nufus;

    public String getTur()
    {
        return this.tur;
    }

    public void setTur(String tur)
    {
        this.tur = tur;
    }
}

Erişim belirteci public, ismi getTur ve geriye değer döndürmek istediğimizden dolayı String olan bir metot oluşturduk. Bunun içine de return this.tur yazdık. Yani buradaki tur‘u geriye döndür. This‘in anlamı bu/buradaki oluyor bi nevi.
Diğer metodumuza bakacak olursak erişim belirteci public, ismi setTur ve geriye değer döndürmemesi sebebiyle void yaptık. Bunun içine de Main‘deki tur‘un, buradaki tur‘a eşit olduğunu belirten bir satır kod yazdık.
Böylelikle erişim berliteci private olan tur‘u erişilebilir hale getirdik ama bu kez erişme şeklini de değiştirmemiz lazım. Bunun için Main.java‘ya gelip aşağıdaki gibi hayvan. yazınca getTur ve setTur‘un bize göründüğünü gördük. Sadece tur için bu işlemi yapmamızdan dolayı cinsiyet ve nufus‘un görünmedi.

erişim belirteci ve get / set

cinsiyet ve nufus için de yapalım ama birinde yalnızca get diğerinde ise yalnızca set yapalım. Ne olduklarını daha iyi anlayalım.
Aşağıda gözüktüğü gibi cinsiyet için get, nufus için set yaptık.

Hayvan.java dosyası

public class Hayvan {
    private String tur;
    private String cinsiyet;
    private int nufus;

    public String getTur()
    {
        return this.tur;
    }

    public void setTur(String tur)
    {
        this.tur = tur;
    }

    public String getCinsiyet()
    {
        return this.cinsiyet;
    }

    public void setNufus(int nufus)
    {
        this.nufus = nufus;
    }
}

Şimdi Main.java‘ya geçip tekrar hayvan. yazınca ne olduğunu görelim.

erişim belirteci ve get / set

tur‘un hem set’ine hem de get’ine ulaşırken nufus ve cinsiyet‘in ise birine get diğerine set’i gözüktü yalnızca.
Bu kez erişme şeklini de değiştirmemiz gerektiğini söylemiştim. eskiden hayvan.cinsiyet şeklinde erişirken artık hayvan.getCinsiyet şeklinde erişiyoruz. Yani yeni oluşturduğumuz metoda erişiyoruz.
get ile belirtilenler yalnızca tur ve cinsiyet olması sebebiyle bunları ekrana bastırabiliriz. Ama nufus‘u ekrana bastıramıyoruz çünkü onun get’i yok.

Get ve Set Örneğinin Son Durumu

Main.java dosyası

public class Main {
    public static void main(String[] args) {
        Hayvan hayvan = new Hayvan();
        hayvan.getTur();
        hayvan.setTur("balık");

        hayvan.getCinsiyet();
        hayvan.setNufus(12);

        System.out.println("Türü : "+hayvan.getTur());

        System.out.println("Türü : "+hayvan.getCinsiyet());
    }
}

Hayvan.java dosyası

public class Hayvan {
    private String tur;
    private String cinsiyet;
    private int nufus;

    public String getTur()
    {
        return this.tur;
    }

    public void setTur(String tur)
    {
        this.tur = tur;
    }

    public String getCinsiyet()
    {
        return this.cinsiyet;
    }

    public void setNufus(int nufus)
    {
        this.nufus = nufus;
    }
}

Çıktısı;

Türü : balık
Türü : null

Çıktıya ve kodlarımıza baktığımızda tur‘un get’i ve set’i var. Bu yüzden balık diye bir değer verdik hem de ekrana bastırdık.
cinsiyet‘in ise yalnızca get’i var. Bu sebepten ekrana bastırabildik ama değer veremedik. Böylelikle null diye bir şey çıktı karşımıza. Yani bunun anlamı, alanı ayrılmış ama bir şeyle dolmadığı için null döndürdüm demek oluyor.
nufus‘un ise yalnızca set’i var. Yani değer verdik ama get’i olmadığından ekrana bastıramadık bile.

Bu konuları böyle cümleler halinde sizlere aktarmak cidden çok zor. Mümkün olduğunca açık olmaya çalışıyorum.
Tek örnek üzerinden konuyu adım adım anlattım. Sırasıyla neler yaptık tek tek incelemeniz gerek ki konuyu anlayasınız.

2 thoughts on “Java Dersleri – 21 – Erişim Belirteci ve Get-Set Kullanımı

  1. Pingback: Java Dersleri - 36 - Packages - Paketler - Mr. Caracal

Bir cevap yazın

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