Kotlin Academy · Ders

field ile Özel Get ve Set İşlevleri

Destekleyen alan anahtar sözcüğünü kullanarak hesaplanan özellikler ve özel setter'lar yazın.

3. ders / 413 adım

field ile Özel Get ve Set İşlevleri, CoddyKit'te ücretsiz bir Kotlin Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Kotlin Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Kotlin Academy kursu toplamda 4 dersten oluşur.

Özellikler Yalnızca Alanlardan İbaret Değildir

Her Kotlin özelliğinin otomatik oluşturulan bir alıcısı ve var için bir ayarlayıcısı vardır. Doğrulama, günlükleme veya hesaplama gibi mantıklar eklemek için bunları geçersiz kılabilirsiniz.

Özel Alıcı

Değer her okunduğunda hesaplanması için get() işlevini geçersiz kılın.

class Circle(val radius: Double) {
    val area: Double
        get() = Math.PI * radius * radius
}
fun main() {
    val c = Circle(3.0)
    println(c.area) // ~28.27
}

Hesaplanan Özellikler

Hesaplanan özelliklerin destek alanı yoktur; değerleri her erişimde hesaplanır.

class Rectangle(val w: Int, val h: Int) {
    val area get() = w * h
    val perimeter get() = 2 * (w + h)
}
fun main() {
    val r = Rectangle(3, 4)
    println("${r.area}, ${r.perimeter}") // 12, 14
}

field ile Özel Ayarlayıcı

Özel bir ayarlayıcının içinde field, destek alanını, yani gerçek depolama alanını ifade eder.

class Temperature {
    var celsius: Double = 0.0
        set(value) {
            require(value >= -273.15) { "below absolute zero" }
            field = value
        }
}
fun main() {
    val t = Temperature()
    t.celsius = 25.0
    println(t.celsius)
    // t.celsius = -300.0 // throws
}

Destek Alanı Otomatik Oluşturulur

Alıcı veya ayarlayıcı field kullanıyorsa Kotlin bir destek alanı oluşturur. İkisi de kullanmıyorsa alan oluşturulmaz; özellik tamamen hesaplanır.

class Counter {
    var count: Int = 0
        set(value) {
            println("Setting count from $field to $value")
            field = value
        }
}
fun main() {
    val c = Counter()
    c.count = 5
    c.count = 10
}

Yan Etkili Ayarlayıcı

Günlükleme, değişiklik bildirimi veya ilişkili durumun eşzamanlanması için özel ayarlayıcılar kullanın.

class Brightness {
    var level: Int = 50
        set(value) {
            val clamped = value.coerceIn(0, 100)
            println("Brightness -> $clamped")
            field = clamped
        }
}
fun main() {
    val b = Brightness()
    b.level = 75
    b.level = 150 // clamps to 100
    println(b.level)
}

Özel Ayarlayıcı

Dahili değişikliğe izin verirken salt okunur bir arayüz sunmak için ayarlayıcıyı private olarak işaretleyin.

class Score {
    var value: Int = 0
        private set
    fun increment() { value++ }
    fun reset() { value = 0 }
}
fun main() {
    val s = Score()
    s.increment(); s.increment()
    println(s.value) // 2
    // s.value = 100 // ERROR: setter is private
}

Ayarlayıcıda Doğrulama

Özel ayarlayıcılar, giriş doğrulaması için doğal yerdir.

class Email {
    var address: String = ""
        set(value) {
            require(value.contains("@")) { "invalid email" }
            field = value
        }
}
fun main() {
    val e = Email()
    e.address = "ada@example.com"
    println(e.address)
}

Mantık İçeren Alıcı

Alıcılar depolanan durumu dönüştürebilir; örneğin depolanan bir değeri biçimlendirebilir veya varsayılan geri dönüşü uygulayabilir.

class Profile(_name: String?) {
    var rawName: String? = _name
    val displayName: String
        get() = rawName ?: "(unset)"
}
fun main() {
    val p = Profile(null)
    println(p.displayName) // (unset)
}

Sabit ve Değişkenin Karşılaştırılması

val özelliklerinin yalnızca alıcısı vardır, ayarlayıcısı yoktur; var özelliklerinin ise ikisi de vardır.

class Box {
    val readOnly: Int get() = 42
    var readWrite: Int = 0
}
fun main() {
    println(Box().readOnly)
    val b = Box(); b.readWrite = 5; println(b.readWrite)
}

Yaygın Hata: Özyineleme

Bir özelliğin kendi erişimcisinde özellik adını kullanmayın; bu, sonsuz özyinelemeye neden olur. Bunun yerine field kullanın.

class Wrong {
    var x: Int = 0
        set(value) {
            // x = value // INFINITE RECURSION — calls setter again
            field = value // CORRECT
        }
}
fun main() {
    val w = Wrong(); w.x = 42; println(w.x)
}

Hızlı Kontrol

Özel bir setter içinde field tanımlayıcısı neyi ifade eder?

Özet

Özellik erişimine mantık eklemek için get() ve set() işlevlerini geçersiz kılın. Destek alanını okumak veya yazmak için erişimcilerin içinde field kullanın. Salt okunur herkese açık API'ler için setter'ları private olarak işaretleyin; değer her zaman türetiliyorsa hesaplanan özellikleri (destek alanı olmadan) kullanın.

Başlamak ücretsiz

Yapay zeka eğitmeniyle Kotlin öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
51
Dersler
203

Sıkça Sorulan Sorular

“field ile Özel Get ve Set İşlevleri” dersi ücretsiz mi?

Evet — “field ile Özel Get ve Set İşlevleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Kotlin Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Kotlin Academy kursu toplamda 4 dersten oluşur.

“field ile Özel Get ve Set İşlevleri” dersinde ne öğreneceğim?

Destekleyen alan anahtar sözcüğünü kullanarak hesaplanan özellikler ve özel setter'lar yazın. Kotlin Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Kotlin Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Kotlin Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“field ile Özel Get ve Set İşlevleri” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Kotlin Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Kotlin Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Birincil Yapıcı ve Özellik Parametreleri
  2. init Blokları ve Başlatma Sırası
  3. field ile Özel Get ve Set İşlevleri
  4. lateinit ve Tembel Başlatma
← Kotlin Academy Sayfasına Dön