CodeBlanks Logo Icon CodeBlanks

companion extension

companion object'e extension ekleme öğrenirsin.

companion extension

Bir companion extension, bir sınıfın companion object'ine extension function ekler. fun ClassName.Companion.method() biçiminde yazılır. Sınıf adıyla statik gibi çağrılır.

Örnek: fun User.Companion.default(): User { return User("misafir") }. Bu extension User.default() olarak çağrılır. Sınıfın kendi companion object'ini değiştirmeden fabrika metotları ve yardımcılar eklenebilir. Özellikle sınıfın kaynak koduna dokunamadığımız durumlarda kullanışlıdır. Companion referansı companion object'in varsayılan adıdır.

default fabrika metodu

Bir companion extension ile bir sınıfa dışarıdan fabrika metodu eklenebilir. Companion referansı alıcı tür olarak yazılır.

Örnek: fun User.Companion.default(): User { return User("misafir") }. User.default() çağrısı User("misafir") döndürür. Bu yöntem, sınıf tanımını değiştirmeden fabrika metotları eklemenin yoludur. Özellikle üçüncü taraf kütüphane sınıfları için yararlıdır. Companion extension'ın gövdesinde this companion object'i ifade eder.

Uygulama User.Companion.default extension'ı

User(val name: String) sınıfı tanımla; companion object bloğu olsun (boş olabilir). fun User.Companion.default(): User extension fonksiyonu tanımla; gövdesi User("misafir") döndürsün. main içinde User.default().name değerini println ile yazdır.

Başlangıç kodu

Main.kt
// User sınıfı tanımı ve sınıf içi singleton bloğu
// Companion referansı ile default extension tanımı
// main'de default çağır ve name'i yazdır

Örnek çözüm

Main.kt
class User(val name: String) {
    companion object
}

fun User.Companion.default(): User {
    return User("misafir")
}

fun main() {
    println(User.default().name)
}

Beklenen çıktı

misafir

Soru ve cevaplar

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

1 Bir <strong>companion extension</strong> nasıl çağrılır?

  • Sınıf örneği üzerinden
  • Yalnızca alt sınıftan
  • Sınıf adıyla doğrudan Doğru cevap
  • Yeni bir object ile

Açıklama: companion extension sınıf adıyla doğrudan çağrılır.

2 companion extension parçalarını eşle

Kavram Anlamı
ClassName.Companion Alıcı referansı
fun User.Companion.default Extension tanımı
User.default() Çağrı
User("misafir") Dönüş değeri

3 companion extension tanımını tamamla

Soru
fun User.____.default(): User {
    return User("misafir")
}
Cevap
fun User.Companion.default(): User {
    return User("misafir")
}

Açıklama: Companion referansı companion object'i işaret eder.

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