0Pricing
Kotlin Academy · Ders

companion object: Kotlin'de Statik Benzeri Üyeler

Statik yöntemleri ve sabitleri taklit etmek için sınıflara companion object ekleyin.

companion object: Kotlin'de Statik Benzeri Üyeler, CoddyKit'te ücretsiz bir Kotlin Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Kotlin Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Kotlin Academy kursu toplamda 4 dersten oluşur.

static Yok, Ancak companion object Var

Kotlin'de static anahtar sözcüğü yoktur. Bunun yerine bir sınıfın içinde tanımlanan companion object, sınıf düzeyinde (statik benzeri) üyeler sağlar.

companion object Tanımlama

Bir sınıfın içine companion object yerleştirin. Üyelerine ClassName.member olarak çağrı yapılabilir.

class MathUtils {
    companion object {
        fun square(x: Int) = x * x
    }
}
fun main() {
    println(MathUtils.square(5)) // 25
}

companion object İçindeki Sabitler

Sabitler genellikle companion object içinde bulunur; derleme zamanındaki sabit değerler için çoğu zaman const val kullanılır.

class HttpClient {
    companion object {
        const val DEFAULT_TIMEOUT = 5000
        const val USER_AGENT = "MyApp/1.0"
    }
}
fun main() {
    println(HttpClient.DEFAULT_TIMEOUT)
    println(HttpClient.USER_AGENT)
}

Adlandırılmış companion object

companion object'e ad verebilirsiniz. Hem ClassName.member hem de ClassName.CompanionName.member çalışır.

class Database {
    companion object Factory {
        fun create() = Database()
    }
}
fun main() {
    val db1 = Database.create()       // works
    val db2 = Database.Factory.create() // also works
    println("$db1 / $db2")
}

Fabrika Yöntemi Deseni

Doğrulama veya alternatif oluşturma mantığıyla örnekler oluşturmak için eşlikçi nesneyi kullanın.

class User private constructor(val name: String, val email: String) {
    companion object {
        fun create(name: String, email: String): User {
            require(email.contains("@")) { "invalid email" }
            return User(name, email)
        }
    }
}
fun main() {
    val u = User.create("Ada", "ada@example.com")
    println("${u.name} <${u.email}>")
}

Arayüzleri Uygulama

Eşlikçi nesnenin kendisi arayüzleri uygulayabilir; bu, statik benzeri bir sözleşmeye ihtiyaç duyan sınıflarla birleştirme yapmak için kullanışlıdır.

interface Loadable<T> { fun load(): T }
class Config(val data: String) {
    companion object : Loadable<Config> {
        override fun load() = Config("loaded data")
    }
}
fun main() {
    println(Config.load().data)
}

Java ile Birlikte Çalışabilirlik için @JvmStatic

Eşlikçi nesne üyelerini Java çağıranlarına gerçek statik yöntemler olarak sunmak için @JvmStatic ile açıklama ekleyin.

class Util {
    companion object {
        @JvmStatic
        fun greet(name: String) = "Hello, $name!"
    }
}
fun main() {
    println(Util.greet("Kotlin"))
    // In Java: Util.greet("Java")
}

Eşlikçi Nesnenin Kendisine Erişme

ClassName.Companion, doğrudan eşlikçi nesneye başvurur. Bunu, nesneyi bağımsız değişken olarak geçirirken kullanın.

class Counter {
    companion object {
        fun greet() = "hi from companion"
    }
}
fun main() {
    val ref = Counter.Companion
    println(ref.greet())
}

Eşlikçi Nesne ve Üst Düzey

Bir sınıfa ait olmayan yardımcı işlevler için yalnızca eşlikçi nesne içeren bir sınıf yerine üst düzey işlevleri tercih edin.

// File-level — usually cleaner:
fun greet(name: String) = "Hi, $name!"
// Versus:
class Greeter { companion object { fun greet(n: String) = "Hi, $n!" } }
fun main() {
    println(greet("Ada"))
    println(Greeter.greet("Ada"))
}

Sınıf Başına Bir Eşlikçi Nesne

Bir sınıf en fazla bir eşlikçi nesne içerebilir. Gerektiğinde ek paylaşılan durumu tutmak için iç normal nesneler kullanılabilir.

class Service {
    companion object {
        val version = "1.0"
    }
    object InternalHelper { fun log() = println("internal") }
}
fun main() {
    println(Service.version)
    Service.InternalHelper.log()
}

Eşlikçi Nesne Genişletme İşlevleri

Sınıfın dışından eşlikçi nesneyi genişleterek sahte statik yardımcılar ekleyebilirsiniz.

class Lib {
    companion object
}
fun Lib.Companion.helper() = "added later"
fun main() {
    println(Lib.helper())
}

Hızlı Kontrol

Kotlin'de Java'nın static üyelerinin karşılığı nedir?

Özet

Kotlin'de static yoktur. Sınıf düzeyindeki üyeler (sabitler, fabrikalar ve arayüz uygulamaları) için bir eşlikçi nesne kullanın. Java ile birlikte çalışabilirlik için @JvmStatic ile açıklama ekleyin veya sahte statik yardımcılar için genişletme işlevleri kullanın.

Sıkça Sorulan Sorular

“companion object: Kotlin'de Statik Benzeri Üyeler” dersi ücretsiz mi?

Evet — “companion object: Kotlin'de Statik Benzeri Üyeler” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Kotlin Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Kotlin Academy kursu toplamda 4 dersten oluşur.

“companion object: Kotlin'de Statik Benzeri Üyeler” dersinde ne öğreneceğim?

Statik yöntemleri ve sabitleri taklit etmek için sınıflara companion object ekleyin. Kotlin Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Kotlin Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Kotlin Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“companion object: Kotlin'de Statik Benzeri Üyeler” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Kotlin Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Kotlin Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. object Bildirimi: Kotlin Singleton'ları
  2. companion object: Kotlin'de Statik Benzeri Üyeler
  3. Adsız Nesneler ve Nesne İfadeleri
  4. companion object ile Fabrika Yöntemleri
← Kotlin Academy Sayfasına Dön