Companion object
- Kotlin kursu
- Orta seviye
- Ders 5/116
- 5 dk
companion object ile sınıf düzeyi üyeler öğrenirsin.
Companion object
companion object, sınıf düzeyinde üyeler tanımlamaya yarar. Kotlin'de static anahtar kelimesi yoktur; bunun yerine companion object içindeki üyeler sınıf adıyla çağrılır.
Örnek: class Counter { companion object { var total = 0; fun create() = Counter() } }. Burada Counter.total ve Counter.create() ile erişilir. Her sınıf için yalnızca bir companion object yazılabilir. Üyeler sınıf adıyla çağrıldığı için instance oluşturmadan kullanılır.
Factory metot
Companion object içindeki bir metot factory olarak kullanılabilir: sınıf örneği oluşturmayı tek elden yönetir. Kısıtları uygulamak, sayaç tutmak veya farklı alt türler döndürmek için uygundur.
Örnek: companion object { var total = 0; fun create(): Counter { total += 1; return Counter() } }. Her create çağrısı total'i artırır. Böylece kaç örnek üretildiği companion object içinde tutulur. Bu, kurulum mantığını sınıf dışına taşımadan yönetmenin temiz bir yoludur.
Uygulama Counter sınıfına companion object ekle
Counter adında bir sınıf tanımla; primary constructor val id: Int alsın. Bir companion object ekle: içinde var total: Int = 0 ve fun create(): Counter metodu olsun. create metodu total'i 1 artırsın ve Counter(total) döndürsün. main içinde iki kez Counter.create() çağır, Counter.total ve ikinci örneğin id'sini yazdır.
Başlangıç kodu
// Counter sınıfı tanımı
// primary: val id: Int
// companion object: var total ve fun create()
// create total'i artırır, Counter(total) döndürür
// main'de iki kez create çağır, total ve id yazdırÖrnek çözüm
class Counter(val id: Int) {
companion object {
var total: Int = 0
fun create(): Counter {
total += 1
return Counter(total)
}
}
}
fun main() {
val a = Counter.create()
val b = Counter.create()
println(Counter.total)
println(b.id)
}Beklenen çıktı
2 2
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Aşağıdaki ifadelerden hangisi companion object için doğrudur?
- Her sınıfta birden fazla companion object olabilir
- Companion object üyeleri sınıf adıyla çağrılır Doğru cevap
- Companion object üyeleri örnek üzerinden çağrılır
- Companion object yalnızca val içerebilir
Açıklama: Companion object üyeleri sınıf adıyla erişilir.
2 Companion object bölümlerini eşle
| Kavram | Anlamı |
|---|---|
companion object |
Blok anahtar kelimesi |
var total = 0 |
Sınıf düzeyi durum |
fun create() |
Factory metot |
Counter.total |
Sınıf adıyla erişim |
3 Companion object bloğunu tamamla
class Counter {
____ object {
var total = 0
}
}
class Counter {
companion object {
var total = 0
}
}
Açıklama: companion object bloğu sınıf düzeyi üyeleri tanımlar.