0Pricing
Kotlin Academy · Ders

Adsız Nesneler ve Nesne İfadeleri

Arayüzlerin tek seferlik uygulamalarını oluşturmak için nesne ifadelerini kullanın.

Adsız Nesneler ve Nesne İfadeleri, CoddyKit'te ücretsiz bir Kotlin Academy dersidir. Bu, 4 dersinin 3. 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.

Nesne İfadeleri

Bir nesne ifadesi, bir sınıfın veya arayüzün anonim ve tek seferlik bir örneğini oluşturur; Kotlin'de Java'nın anonim iç sınıflarına karşılık gelir, ancak daha güçlüdür.

Anonim Olarak Arayüz Uygulama

Satır içi bir uygulama oluşturmak için object : Interface { ... } kullanın.

interface ClickListener {
    fun onClick(): String
}
fun main() {
    val listener = object : ClickListener {
        override fun onClick() = "clicked!"
    }
    println(listener.onClick())
}

Durum İçeren Anonim Sınıf

Anonim nesneler durum tutabilir ve birden çok yönteme sahip olabilir.

fun main() {
    val counter = object {
        var count = 0
        fun inc() { count++ }
        fun show() = println("count = $count")
    }
    counter.inc(); counter.inc(); counter.inc()
    counter.show()
}

Anonim Nesne Türü

Anonim bir nesnenin türü çıkarımla belirlenir. İşlev düzeyinde bildirildiğinde özel üyelerine erişmeye devam edersiniz.

fun main() {
    val pair = object {
        val left = "L"
        val right = "R"
    }
    println("${pair.left} and ${pair.right}")
}

Anonim Türün Dışa Açılması

Anonim bir nesne, çıkarımla belirlenen türü olan bir işlevden döndürülürse çağıranlar yalnızca üst türü görür; anonim eklemelere dışarıdan erişilemez.

fun makeListener() = object {
    fun greet() = "hello"
}
fun main() {
    val l = makeListener()
    println(l.greet()) // OK — same compilation unit
}

Birden Çok Arayüz

Anonim bir nesne, tek bir ifadede birden çok arayüzü uygulayabilir.

interface Closeable { fun close() }
interface Flushable { fun flush() }
fun main() {
    val resource = object : Closeable, Flushable {
        override fun close() = println("closed")
        override fun flush() = println("flushed")
    }
    resource.flush()
    resource.close()
}

Sınıfı Genişletme

Anonim nesneler, üyeleri geçersiz kılarken açık bir sınıfı genişletebilir.

open class Animal(val name: String) {
    open fun speak() = "$name makes a sound"
}
fun main() {
    val pet = object : Animal("Rex") {
        override fun speak() = "$name barks!"
    }
    println(pet.speak())
}

Kapsamdaki Değişkenleri Yakalama

Anonim nesneler, çevreleyen kapsamdaki değişkenleri (okuyup değiştirerek) kapatır; bu, Java'nın final gerektirmesinden farklıdır.

fun main() {
    var log = mutableListOf<String>()
    val recorder = object {
        fun record(s: String) { log.add(s) }
    }
    recorder.record("event 1")
    recorder.record("event 2")
    println(log)
}

Anonim Nesneler Ne Zaman Kullanılmalı

Kendilerine ait bir sınıfı hak etmeyen tek seferlik uygulamalar için anonim nesneleri kullanın; bunlar genellikle geri çağırmalar, dinleyiciler ve karşılaştırıcılardır.

fun main() {
    val nums = listOf(3, 1, 4, 1, 5, 9, 2, 6)
    val sorted = nums.sortedWith(object : Comparator<Int> {
        override fun compare(a: Int, b: Int) = b - a // descending
    })
    println(sorted)
}

Mümkünse Lambdaları Tercih Edin

Arayüzde tek bir soyut yöntem (SAM) varsa lambda, nesne ifadesinden daha temizdir.

fun main() {
    val nums = listOf(3, 1, 4, 1, 5, 9)
    // Old way:
    val sorted1 = nums.sortedWith(object : Comparator<Int> {
        override fun compare(a: Int, b: Int) = b - a
    })
    // New way — SAM conversion:
    val sorted2 = nums.sortedWith(Comparator { a, b -> b - a })
    println("$sorted1 / $sorted2")
}

Anonim ve Bildirilmiş object

Adlandırılmış bir tekil nesne için object Name kullanın. Tek seferlik anonim bir örnek için ifadede object : Type kullanın.

// Named singleton (one instance, accessed globally)
object GlobalLogger { fun log(m: String) = println("[L] $m") }
// Anonymous (created at expression evaluation)
fun main() {
    val local = object { fun hi() = "hi" }
    GlobalLogger.log("hello")
    println(local.hi())
}

Hızlı Kontrol

Bir arayüzü satır içinde uygulayan anonim bir örneği hangi söz dizimi oluşturur?

Özet

Nesne ifadeleri, satır içinde tek seferlik anonim örnekler oluşturur. Arayüzleri uygulayabilir, sınıfları genişletebilir, durum tutabilir ve çevreleyen kapsamdaki değişkenleri kapatabilirler. Tek yöntemli arayüzler için lambdaları tercih edin; birden çok yönteme veya duruma ihtiyaç duyduğunuzda nesne ifadelerini kullanın.

Sıkça Sorulan Sorular

“Adsız Nesneler ve Nesne İfadeleri” dersi ücretsiz mi?

Evet — “Adsız Nesneler ve Nesne İfadeleri” 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.

“Adsız Nesneler ve Nesne İfadeleri” dersinde ne öğreneceğim?

Arayüzlerin tek seferlik uygulamalarını oluşturmak için nesne ifadelerini kullanın. 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 3. dersidir.

“Adsız Nesneler ve Nesne İfadeleri” 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