CodeBlanks Logo Icon CodeBlanks

Primary constructor

Primary constructor ve init bloğunu öğrenirsin.

Primary constructor

Kotlin'de primary constructor, sınıf başlığında parantez içinde tanımlanır. Parametreleri val veya var ile işaretleyerek doğrudan özellik yapabilirsin.

Örnek: class User(val name: String). Burada name hem yapıcı parametresi hem de sınıf özelliğidir. Gövde init bloğuyla başlar; ilk değer atamaları burada yapılır. Kısa ve okunaklı bir tanım sağlar.

init bloğu

init bloğu, sınıf örneği oluşturulurken çalışan koddur. Primary constructor'ın gövdesi olarak düşünülebilir. Birden fazla init bloğu yazılabilir; yukarıdan aşağıya sırayla çalışır.

Örnek: class User(val name: String) { init { println("Hazır: $name") } }. Özellikler zaten atanmış olduğu için init içinde güvenle kullanılabilir. Parametre doğrulama ve yan etkiler burada yapılır.

Uygulama User sınıfını tanımla

User adında bir sınıf tanımla. Primary constructor bir val name: String parametresi alsın. Bir init bloğu ekle; içinde println("Oluşturuldu: $name") yaz. main içinde bir User örneği oluştur ve name özelliğini yazdır.

Başlangıç kodu

Main.kt
// User sınıfı tanımı
// primary constructor: val name: String
// init bloğunda yazdır
// main içinde örnekle ve yazdır

Örnek çözüm

Main.kt
class User(val name: String) {
    init {
        println("Oluşturuldu: $name")
    }
}

fun main() {
    val u = User("Ayşe")
    println(u.name)
}

Beklenen çıktı

Oluşturuldu: Ayşe
Ayşe

Soru ve cevaplar

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

1 Hangisi geçerli bir primary constructor tanımıdır?

  • function User(name: String)
  • class User(val name: String) Doğru cevap
  • User class { name: String }
  • def User(name):

Açıklama: class adı, parantez içinde val ile özellik parametresi primary constructor tanımıdır.

2 Sınıf gövdesini aç

Soru
class User(val name: String) ____
    init { println(name) }
}
Cevap
class User(val name: String) {
    init { println(name) }
}

Açıklama: Süslü parantez sınıf gövdesini başlatır.

3 Primary constructor bölümlerini eşle

Kavram Anlamı
class User Sınıf başlığı
(val name: String) Parametre listesi
init { ... } İlk değer bloğu
val name Özellik parametresi

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