0Pricing
Kotlin Academy · Ders

init Blokları ve Başlatma Sırası

init bloklarını kullanın ve özelliklerle blokların başlatılma sırasını anlayın.

init Blokları ve Başlatma Sırası, 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.

Başlatma Bloğu Nedir

init { } bloğu, bir örnek oluşturulduğunda çalıştırılan kodu içerir. Bu blok, birincil kurucu mantığının parçasıdır.

Basit Başlatma Bloğu

Başlatma bloğu, oluşturma sırasında ve kaynak kodundaki sıraya göre özellik başlatıcılarından sonra çalışır.

class Logger(val name: String) {
    init {
        println("Constructed Logger("$name")")
    }
}
fun main() {
    val l = Logger("auth")
}

Başlatmada Doğrulama

Oluşturma sırasında değişmez koşulları zorunlu kılmak için başlatma içinde require / check kullanın.

class Percentage(val value: Int) {
    init {
        require(value in 0..100) { "value must be 0..100, was $value" }
    }
}
fun main() {
    println(Percentage(75).value)
    // Percentage(150) // throws IllegalArgumentException
}

Birden Çok Başlatma Bloğu

Birden çok başlatma bloğunuz olabilir; bunlar özellik başlatıcılarıyla dönüşümlü olarak kaynak kodundaki sırayla çalışır.

class Demo(val x: Int) {
    init { println("First init, x=$x") }
    val doubled = x * 2
    init { println("Second init, doubled=$doubled") }
}
fun main() {
    Demo(5)
}

Özellik Başlatıcıları ve Başlatma Sırası

Özellik başlatıcıları ve başlatma blokları kaynak kodundaki sıraya göre yukarıdan aşağıya çalışır. Bir özellik kullanılmadan önce atanmış olmalıdır.

class Order {
    val createdAt = System.currentTimeMillis()
    init { println("created at $createdAt") }
    val nextId = 1
    init { println("next id = $nextId") }
}
fun main() {
    Order()
}

Başlatılmadan Önce Özellikler Kullanılamaz

Bir özellik başlatıcısı çalışmadan önce ona başvurmak derleme hatasına neden olur.

class Bad {
    init {
        // println(name) // ERROR: name not yet initialized
    }
    val name = "after init"
}
fun main() { Bad() }

Türetilmiş Özellikleri Hesaplama

Birden çok kurucu parametresine bağlı türetilmiş durumu hesaplamak için başlatma bloklarını kullanın.

class Rectangle(val width: Int, val height: Int) {
    val area: Int
    init {
        area = width * height
    }
}
fun main() {
    val r = Rectangle(4, 5)
    println("area = ${r.area}") // 20
}

Yan Etkiler: Günlükleme

Günlükleme, ayırma veya kaydetme gibi basit olmayan kurulum işlemleri için başlatmayı kullanın.

class Service(val name: String) {
    init {
        println("[BOOT] starting service '$name'")
    }
}
fun main() {
    Service("auth")
    Service("payments")
}

Alt Sınıflarla Başlatma Sırası

Üst sınıfın başlatılması, alt sınıfın başlatılmasından önce gerçekleşir. Her sınıfın kendi özellikleri kaynak kodundaki sırayla başlatılır.

open class Base {
    init { println("Base init") }
}
class Sub : Base() {
    init { println("Sub init") }
}
fun main() { Sub() }

Başlatmada Ağır Mantıktan Kaçının

Uzun süren başlatma blokları her oluşturma işlemini yavaşlatır. Kurulum maliyetliyse tembel başlatmayı veya fabrika yöntemlerini değerlendirin.

class Heavy(val n: Int) {
    val data: List<Int> by lazy { (1..n).toList() }
}
fun main() {
    val h = Heavy(1_000_000)
    println("Created without computing data")
    println("First element: ${h.data[0]}") // now data initializes
}

Başlatmayı İkincil Kurucularla Birleştirme

İkincil kurucular birincil kurucuya yetki devreder; başlatma blokları birincil yolun parçası olarak çalışır.

class Box(val content: String) {
    init { println("init for '$content'") }
    constructor(): this("empty") { println("secondary done") }
}
fun main() {
    Box()
}

Hızlı Kontrol

Bir Kotlin sınıfında birden çok init bloğunun ve özellik başlatıcısının yürütülme sırası nasıldır?

Özet

init blokları oluşturma sırasında gereken mantığı içerir: doğrulama, türetilmiş özellikler ve yan etkiler. Birden çok blok, özellik başlatıcılarıyla dönüşümlü olarak kaynak kodundaki sırayla çalışır. Başlatmada ağır işlemlerden kaçının; bunun yerine lazy veya fabrika yöntemlerini kullanın.

Sıkça Sorulan Sorular

“init Blokları ve Başlatma Sırası” dersi ücretsiz mi?

Evet — “init Blokları ve Başlatma Sırası” 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.

“init Blokları ve Başlatma Sırası” dersinde ne öğreneceğim?

init bloklarını kullanın ve özelliklerle blokların başlatılma sırasını anlayı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 2. dersidir.

“init Blokları ve Başlatma Sırası” 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