0Pricing
Kotlin Academy · Ders

İç Sınıflar

Dış kapsama erişin

İç Sınıflar, CoddyKit'te ücretsiz bir Kotlin Academy dersidir. Bu, 4 dersinin 2. 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.

İç Anahtar Sözcüğü

İç içe bir sınıfı inner ile işaretlemek, sınıfa dış sınıf örneğine referans verir; böylece sınıf dış sınıfın üyelerine erişebilir.

class Outer {
    val msg = "Hello"
    inner class Inner {
        fun show() = msg
    }
}

fun main() {
    println(Outer().Inner().show())
}

İç Sınıf Örneği Oluşturma

İç sınıfın bir dış sınıf örneğine ihtiyacı olduğundan, onu bir dış sınıf örneğinden oluşturursunuz: Outer().Inner().

class Engine {
    val power = 100
    inner class Turbo {
        fun boosted() = power * 2
    }
}

fun main() {
    println(Engine().Turbo().boosted())
}

Dış Sınıf Özelliklerine Erişme

İç sınıf, dış sınıfın özelliklerini doğrudan, sanki kendi özellikleriymiş gibi okur ve kullanır.

class Counter {
    var count = 0
    inner class Stepper {
        fun step() { count++ }
    }
}

fun main() {
    val c = Counter()
    c.Stepper().step()
    println(c.count)
}

Dış Sınıf Yöntemlerini Çağırma

İç sınıflar, kapsayan örnek üzerindeki yöntemleri de çağırabilir.

class Printer {
    fun line(s: String) = println(s)
    inner class Job {
        fun run() = line("printing")
    }
}

fun main() {
    Printer().Job().run()
}

this@Outer Sözdizimi

Dış sınıf örneğine açıkça başvurmak için (örneğin adlar çakıştığında) this@Outer kullanınız.

class Outer {
    val value = 10
    inner class Inner {
        val value = 20
        fun outerValue() = this@Outer.value
    }
}

fun main() {
    println(Outer().Inner().outerValue())
}

inner Neden Kullanılır?

İç içe türün belirli bir dış sınıf örneğiyle iş birliği yapması ve onun durumunu paylaşması gerçekten gerekiyorsa inner kullanınız.

class Wallet {
    var balance = 50
    inner class Transaction(val amount: Int) {
        fun apply() { balance += amount }
    }
}

fun main() {
    val w = Wallet()
    w.Transaction(25).apply()
    println(w.balance)
}

Her İç Sınıf Bir Dış Sınıfa Bağlıdır

Bir iç sınıf örneği, onu oluşturan tam dış sınıf örneğine bağlıdır; değişiklikler bu nesneye yansır.

class Box(var size: Int) {
    inner class Resizer {
        fun grow() { size += 1 }
    }
}

fun main() {
    val b = Box(3)
    b.Resizer().grow()
    println(b.size)
}

İç Sınıf ve İç İçe Sınıf

inner olmadan iç içe sınıf yalıtılmıştır. inner kullanıldığında dış sınıf örneğini yakalar. Tüm farkı oluşturan anahtar sözcük budur.

class Outer {
    val tag = "X"
    inner class A { fun get() = tag }
}

fun main() {
    println(Outer().A().get())
}

Bellek Notu

İç sınıf örneği dış sınıf örneğini canlı tuttuğundan, dış nesneyi istemeden elde tutmamak için uzun ömürlü iç sınıf nesneleri kullanırken dikkatli olunuz.

class Service {
    val id = 1
    inner class Worker { fun who() = id }
}

fun main() {
    println(Service().Worker().who())
}

Gerçekçi Bir Yineleyici

İç sınıf, kapsayan koleksiyonun durumunu dolaşan bir yineleyici için idealdir.

class Stack {
    private val items = mutableListOf(1, 2, 3)
    inner class Reader {
        fun all() = items.joinToString()
    }
}

fun main() {
    println(Stack().Reader().all())
}

Kavramları Birleştirme

İç sınıflar dış sınıfın durumunu kullanabilir ve this@Outer ile belirsizliği giderebilir.

class Outer {
    val n = 5
    inner class Inner {
        fun doubled() = this@Outer.n * 2
    }
}

fun main() {
    println(Outer().Inner().doubled())
}

Hızlı Kontrol

İç sınıflar hakkındaki anlayışınızı kontrol ediniz.

Özet

İç sınıflar hakkında şunları öğrendiniz:

  • inner, dış sınıf örneğine ve onun üyelerine erişim sağlar.
  • Bir dış sınıf örneği üzerinden oluşturulur: Outer().Inner().
  • Kapsayan örneğe başvurmak için this@Outer kullanılır.
  • İç sınıf örnekleri dış sınıf örneklerini canlı tutar.
class Outer {
    val v = 1
    inner class Inner { fun get() = v }
}

fun main() {
    println(Outer().Inner().get())
}

Sıkça Sorulan Sorular

“İç Sınıflar” dersi ücretsiz mi?

Evet — “İç Sınıflar” 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.

“İç Sınıflar” dersinde ne öğreneceğim?

Dış kapsama erişin 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 2. dersidir.

“İç Sınıflar” 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. İç İçe Sınıflar
  2. İç Sınıflar
  3. Anonim Nesneler
  4. Yerel Sınıflar
← Kotlin Academy Sayfasına Dön