Getter ve Setter Kotlin’de bize kolaylık sağlar. Ancak, pek fazla kullanımı tercih edilmiyor.

class Kisi(var No:Int, var Ad:String)
{
    var id : Int = No
    
    fun getID()
    {
        println(this.id)
    }
    
    fun setID()
    {
        if(id<0)
        this.id=1
    }
}

fun main(args: Array<String>)
{
    var k1 : Kisi = Kisi(-5,"Barış")
    k1.setID()
    k1.getID()
}


Yukarıdaki örnekte ID kontrolünü metot ile gerçekleştirdik. Görüldüğü üzere, parametreye -5 gönderildiğinde bunu kontrol etmek için getID() ve SetID() metotları tanımladık. Ancak, getter ve setter aracılığıyla bu metotları bu şekilde tanımlamak zorunda değiliz.

class Kisi
{
    var id : Int
    
    get() = field /* field üstteki değişken anlamındadır.*/
    set(value)
    {
        if(value<0)
        field=1
        
        else
        field=value
    }
    
     var isim : String
    
    constructor(No:Int, Ad:String)
    {
        this.id=No
        this.isim=Ad
    }
    
    
}

fun main(args: Array<String>)
{
    var k1 : Kisi = Kisi(-2, "Barış")
    println(k1.id)
 
}


Bu örneğimde ise get() ve set() metotlarını kullanarak, nesne ürettiğimde herhangi bir metot çağırmak zorunda kalmadım. Burada, get() = field işleminde field, get() satırının üstünde tanımlanan değişkeni ifade etmektedir. Dediğim gibi, kullanmak zorunlu değil tamamen isteğe bağlı yukarıdaki ilk örnekteki gibi de kullanabilirsiniz.

Oluşturduğumuz sınıflarda sabitler kullanmak istiyorsak “enum” anahtar kelimesini kullanırız.

class Kisi
{
    var id : Int
    
    get() = field /* field üstteki değişken anlamındadır.*/
    set(value)
    {
        if(value<0)
        field=1
        
        else
        field=value
    }
    
     var isim : String
     var pozisyon : Unvan
    
    constructor(No:Int, Ad:String, Pozisyon:Unvan)
    {
        this.id=No
        this.isim=Ad
        this.pozisyon=Pozisyon
        
    }
    
    
}

enum class Unvan
{
    YÖNETİCİ,
    MUHASEBECİ,
    YAZILIMCI
}

fun main(args: Array<String>)
{
    var k1 : Kisi = Kisi(3, "Barış", Unvan.YAZILIMCI)
    println(k1.id)
    println(k1.isim)
    println(k1.pozisyon)
 
}


Yukarıda görüldüğü üzere, Unvan sınıfı tanımladım ve bunun içinde sabitler kullandım. Kullandığım bu sabitleri parametre olarak Kisi sınıfında kullandık. Bunları nerelerde kullanırız, ne işimize yarar gibi sorular akılınıza gelebilir. get() ve set() metotları isteğe bağlı olsa da bazen işimizi kolaylaştırabilir. Ayrıca, enum kavramı ise ileride JSON verilerle çalıştığınızda işinize mutlaka yarayabilir. İyi çalışmalar.