Junior — Middle
Bir nesne oluşturulurken özelliklerin başlatılması ve kod bloklarının yürütülmesi hangi sırayla olur, companion object, init bloğu, yapıcıdaki değişkenler ve normal değişkenler dahil?
sobes.tech yapay zeka
AI'dan gelen yanıt
Kotlin'de bir nesne oluşturulurken, başlatma sırası şu şekildedir:
- companion object'in başlatılması — sınıf yüklenirken bir kez gerçekleşir, örnekler oluşturulmadan önce.
- Sınıf gövdesinde bildirilen özelliklerin başlatılması (dışında bildirilen özellikler dahil) — bunlar bildirim sırasına göre başlatılır.
- init bloklarının yürütülmesi — sınıfta bildirildikleri sırayla, özelliklerin başlatılmasının hemen ardından yürütülürler.
- Yapıcıda bildirilen özelliklerin (örneğin, val/var parametreleri) başlatılması — yapıcı çağrısı ile birlikte başlatılırlar.
Örnek:
class Example(val constructorProp: String) {
val property1 = println("property1 başlatıldı")
init {
println("init blok 1")
}
val property2 = println("property2 başlatıldı")
init {
println("init blok 2")
}
companion object {
init {
println("companion object başlatıldı")
}
}
}
fun main() {
val example = Example("yapıcı")
}
Çıktı yaklaşık olarak:
companion object başlatıldı
property1 başlatıldı
init blok 1
property2 başlatıldı
init blok 2
Bu şekilde, companion object sınıf yüklenirken bir kez başlatılır, ardından nesne oluşturulurken özellikler başlatılır ve init blokları bildirim sırasına göre yürütülür, ve yapıcı parametreleri yapıcı çağrısı ile başlatılır.