Properties
- Kotlin kursu
- Orta seviye
- Ders 3/116
- 5 dk
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
// 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
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
class Account {
____ balance: Double = 0.0
}
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 |