Secondary constructor
- Kotlin kursu
- Orta seviye
- Ders 2/116
- 5 dk
Secondary constructor ile birden çok yapıcı öğrenirsin.
Secondary constructor
Bir sınıfta birden çok yapıcı istediğinde secondary constructor kullanırsın. constructor anahtar kelimesiyle başlar ve gövdesinde başka bir yapıcıya this(...) ile çağrı yapmalıdır.
Örnek: class Book(val title: String) { constructor(t: String, a: String) : this(t) { println(a) } }. Burada ikinci yapıcı önce this(t) ile primary constructor'ı çağırır, sonra kendi gövdesini çalıştırır. Her secondary constructor mutlaka bir this çağrısıyla başlamalıdır.
this(...) çağrısı
Bir secondary constructor, gövdesinde başka bir yapıcıya this(...) ile köprü kurar. Bu çağrı, yapıcı gövdesinin ilk satırı olur. Önce primary constructor ve init blokları çalışır, sonra secondary gövde çalışır.
Örnek: constructor(name: String, age: Int) : this(name) { println(age) }. Burada önce this(name) ile primary constructor, ardından secondary gövde çalışır. Bu sıra, özelliklerin her zaman başlatılmış olmasını garanti eder.
Uygulama Book sınıfına secondary constructor ekle
Book adında bir sınıf tanımla. Primary constructor val title: String parametresi alsın. Bir secondary constructor ekle: title ve author alsın, primary'ye this(title) ile köprü kursun ve gövdesinde println("Yazar: $author") yazsın. main içinde iki parametreli yapıcıyı çağır.
Başlangıç kodu
// Book sınıfı tanımı
// primary: val title: String
// secondary: title ve author, this(title) ile
// main içinde iki parametreli yapıcıyı çağırÖrnek çözüm
class Book(val title: String) {
constructor(t: String, a: String) : this(t) {
println("Yazar: $a")
}
}
fun main() {
val b = Book("Kotlin", "JetBrains")
}Beklenen çıktı
Yazar: JetBrains
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Secondary constructor bölümlerini eşle
| Kavram | Anlamı |
|---|---|
constructor(t, a) |
İkincil yapıcı imzası |
: this(t) |
Primary çağrısı |
{ println(a) } |
Ek gövde |
class Book(val title) |
Primary constructor |
2 Secondary constructor ne zaman kullanılır?
- Sınıfın yalnızca tek bir parametresi varsa
- Primary constructor kullanmak yasak olduğunda
- Aynı sınıf için farklı parametre kombinasyonları gerektiğinde Doğru cevap
- Sınıf kalıtım almayacaksa
Açıklama: Farklı parametre setleri gerektiğinde secondary constructor eklenir.
3 Secondary constructor gövdesini tamamla
class Book(val title: String) {
constructor(t: String, a: String) ____ this(t) {
println(a)
}
}
class Book(val title: String) {
constructor(t: String, a: String) : this(t) {
println(a)
}
}
Açıklama: İki nokta, this çağrısını bağlar.