CodeBlanks Logo Icon CodeBlanks

Properties

Mutable ve read-only özellikleri öğrenirsin.

val ve var özellikler

Kotlin'de özellik (property) sınıfın verisini tutar. val ile tanımlanan özellik read-only'dir, atandıktan sonra değişmez. var ile tanımlanan özellik mutable'dır, yeniden atanabilir.

Örnek: class Account(var balance: Double, val owner: String). Burada balance değiştirilebilir, owner ise yalnızca okunur. Bir özelliği okumak ya da atamak, arka planda getter ve setter çağırır. Bu yüzden Kotlin'de ayrı alan ve metot yazmak yerine özellik kullanılır.

Backing field ve özel getter

Bir özelliğe özel davranış eklemek için getter tanımlayabilirsin. Getter içinde field anahtar kelimesi arka plandaki backing field'a erişir; bu, sonsuz döngüyü önler.

Örnek: var balance: Double = 0.0; get() = field. Burada field özelliğin kendi deposudur. Özellik read-only ise yalnızca getter, mutable ise hem getter hem setter yazılır. Getter içinde field kullanmak, özelliğin kendisini çağırmaktan kaçınmanın standart yoludur.

Uygulama Account sınıfını tanımla

Account adında bir sınıf tanımla. Primary constructor initial: Double alsın. Sınıf içinde var balance: Double = initial özelliğini tanımla ve get() = field özel getter'ını ekle. fun deposit(amount: Double) metodu eklesin; gövdesinde balance += amount yapsın. main içinde 100.0 ile örnekle, 50.0 yatır ve balance'ı yazdır.

Başlangıç kodu

Main.kt
// Account sınıfı tanımı
// initial: Double primary parametresi
// var balance özelliği, özel getter ile
// deposit(amount) metodu ekle
// main içinde örnekle, yatır, yazdır

Örnek çözüm

Main.kt
class Account(initial: Double) {
    var balance: Double = initial
        get() = field

    fun deposit(amount: Double) {
        balance += amount
    }
}

fun main() {
    val a = Account(100.0)
    a.deposit(50.0)
    println(a.balance)
}

Beklenen çıktı

150.0

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Aşağıdaki tanımlardan hangisi yeniden atanabilir bir özellik oluşturur?

  • val age: Int
  • const val PI: Double
  • val name = "Ayşe"
  • var score: Int Doğru cevap

Açıklama: var ile tanımlanan özellik yeniden atanabilir.

2 Özellik tanımını tamamla

Soru
class Account {
    ____ balance: Double = 0.0
}
Cevap
class Account {
    var balance: Double = 0.0
}

Açıklama: var, yeniden atanabilir özellik tanımlar.

3 Özellik kavramlarını eşle

Kavram Anlamı
var score: Int Mutable özellik
val name: String Read-only özellik
get() = field Özel getter
field Backing field

Orta seviye bölümündeki tüm dersler