0Pricing
Kotlin Academy · Pelajaran

Objek Anonim

Implementasi sebaris

Objek Anonim adalah pelajaran Kotlin Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Kotlin Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Kotlin Academy mencakup 4 pelajaran total.

Implementasi Sebaris

Sebuah objek anonim membuat instans kelas atau antarmuka tanpa menamai kelas baru. Gunakan ekspresi object.

interface Greeter { fun greet(): String }

fun main() {
    val g = object : Greeter {
        override fun greet() = "Hi"
    }
    println(g.greet())
}

Mengimplementasikan Antarmuka

Ekspresi objek dapat mengimplementasikan satu atau beberapa antarmuka tepat di tempat yang membutuhkannya.

interface Clickable { fun click() }

fun main() {
    val button = object : Clickable {
        override fun click() = println("Clicked")
    }
    button.click()
}

Mengganti Anggota Kelas

Anda dapat membuat subkelas anonim dari kelas yang terbuka untuk pewarisan dan mengganti anggotanya.

open class Animal { open fun sound() = "..." }

fun main() {
    val cat = object : Animal() {
        override fun sound() = "Meow"
    }
    println(cat.sound())
}

Menyimpan Keadaan Tambahan

Sebuah objek anonim dapat mendeklarasikan propertinya sendiri selain anggota yang digantinya.

fun main() {
    val point = object {
        val x = 3
        val y = 4
    }
    println("${point.x}, ${point.y}")
}

Objek Tanpa Tipe Induk

Jika Anda menghilangkan tipe induk, objek tersebut hanyalah kumpulan anggota ad hoc yang berguna untuk pengelompokan lokal secara cepat.

fun main() {
    val config = object {
        val retries = 3
        val timeout = 30
    }
    println(config.retries)
}

Menangkap Variabel Lokal

Objek anonim dapat menangkap variabel dari lingkup yang menaunginya, berbeda dari kelas Nested statis.

fun makeCounter(start: Int): () -> Int {
    var count = start
    val obj = object {
        fun next() = count++
    }
    return { obj.next() }
}

fun main() {
    val c = makeCounter(10)
    println(c())
    println(c())
}

Sebagai Pendengar

Salah satu penggunaan umum adalah meneruskan implementasi sebaris sebagai panggilan balik atau pendengar.

interface OnDone { fun done(result: Int) }

fun compute(cb: OnDone) {
    cb.done(42)
}

fun main() {
    compute(object : OnDone {
        override fun done(result: Int) = println("Got $result")
    })
}

Tipe Objek Anonim

Saat dikembalikan dari sebuah fungsi, tipe yang diinferensikan adalah tipe induk yang dideklarasikan, atau tipe umum jika tidak ada. Anggota tambahan hanya terlihat secara lokal.

interface Named { val name: String }

fun make(): Named = object : Named {
    override val name = "X"
}

fun main() {
    println(make().name)
}

Objek Anonim vs Lambda

Untuk antarmuka dengan satu metode, lambda lebih ringkas, tetapi objek anonim diperlukan saat Anda harus mengganti beberapa anggota atau menyimpan keadaan.

interface Handler {
    fun onStart()
    fun onStop()
}

fun main() {
    val h = object : Handler {
        override fun onStart() = println("start")
        override fun onStop() = println("stop")
    }
    h.onStart()
    h.onStop()
}

Ekspresi Objek vs Deklarasi Objek

Sebuah ekspresi objek membuat instans baru setiap kali digunakan. Sebuah deklarasi objek (object Name {}) adalah singleton bernama. Keduanya tampak mirip, tetapi berbeda dalam masa hidupnya.

object Singleton { val id = 1 }

fun main() {
    val fresh = object { val id = 2 }
    println(Singleton.id)
    println(fresh.id)
}

Pembanding yang Ringkas

Objek anonim berguna untuk pembanding atau strategi yang hanya digunakan satu kali.

fun main() {
    val cmp = object : Comparator<Int> {
        override fun compare(a: Int, b: Int) = b - a
    }
    val list = listOf(1, 3, 2).sortedWith(cmp)
    println(list)
}

Pemeriksaan Singkat

Uji pemahaman Anda tentang objek anonim.

Rangkuman

Anda telah mempelajari objek anonim:

  • Ekspresi object : Type {} membuat instans tanpa nama.
  • Objek tersebut dapat mengimplementasikan antarmuka, membuat subkelas dari kelas yang terbuka untuk pewarisan, dan menyimpan keadaan.
  • Objek tersebut menangkap variabel lokal yang menaunginya.
  • Gunakan objek tersebut untuk panggilan balik dengan beberapa metode; pilih lambda untuk metode tunggal.
interface Run { fun go() }

fun main() {
    val r = object : Run { override fun go() = println("go") }
    r.go()
}

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Objek Anonim” gratis?

Ya — teks lengkap “Objek Anonim” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Kotlin Academy, upgrade ke CoddyKit PRO. Kursus Kotlin Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Objek Anonim”?

Implementasi sebaris Kamu berlatih Kotlin Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Kotlin Academy?

Tidak diperlukan pengalaman sebelumnya. Kotlin Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Objek Anonim” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Kotlin Academy ini?

Ya. Setiap pelajaran Kotlin Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Kelas Bersarang
  2. Kelas Inner
  3. Objek Anonim
  4. Kelas Lokal
← Kembali ke Kotlin Academy