0Pricing
Kotlin Academy · Pelajaran

companion object: Anggota Bergaya Statis di Kotlin

Tambahkan companion object ke class untuk menyimulasikan metode dan konstanta statis.

companion object: Anggota Bergaya Statis di Kotlin adalah pelajaran Kotlin Academy gratis di CoddyKit. Ini adalah pelajaran 2 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.

Tidak Ada static, tetapi Ada companion object

Kotlin tidak memiliki kata kunci static. Sebagai gantinya, companion object yang dideklarasikan di dalam kelas menyediakan anggota tingkat kelas (mirip static).

Mendeklarasikan companion object

Letakkan companion object di dalam kelas. Anggotanya dapat dipanggil sebagai ClassName.member.

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

Konstanta dalam companion object

Konstanta biasanya berada di dalam companion object, sering kali menggunakan const val untuk literal saat kompilasi.

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)
}

companion object Bernama

Anda dapat memberi nama pada companion object. Baik ClassName.member maupun ClassName.CompanionName.member dapat digunakan.

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")
}

Pola Metode Pabrik

Gunakan objek pendamping untuk membuat instans dengan validasi atau logika konstruksi alternatif.

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}>")
}

Menerapkan Antarmuka

Objek pendamping itu sendiri dapat menerapkan antarmuka—berguna untuk menggabungkannya dengan kelas yang memerlukan kontrak seperti statis.

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)
}

@JvmStatic untuk Interoperabilitas Java

Anotasikan anggota objek pendamping dengan @JvmStatic agar dapat diekspos sebagai metode statis sejati kepada pemanggil Java.

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

Mengakses Objek Pendamping Itu Sendiri

ClassName.Companion merujuk langsung ke objek pendamping. Gunakan ini saat meneruskannya sebagai argumen.

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

Objek Pendamping vs Tingkat Atas

Untuk fungsi utilitas yang tidak termasuk dalam suatu kelas, pilih fungsi tingkat atas daripada kelas yang hanya memiliki objek pendamping.

// 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"))
}

Satu Objek Pendamping per Kelas

Sebuah kelas dapat memiliki paling banyak satu objek pendamping. Objek reguler di dalam dapat menyimpan status bersama tambahan jika diperlukan.

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

Fungsi Ekstensi Objek Pendamping

Anda dapat memperluas objek pendamping dari luar kelas, dengan menambahkan pembantu yang berperilaku seperti statis.

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

Pemeriksaan Singkat

Apa padanan Kotlin untuk anggota static milik Java?

Rangkuman

Kotlin tidak memiliki static. Gunakan objek pendamping untuk anggota tingkat kelas—konstanta, pabrik, dan implementasi antarmuka. Anotasikan dengan @JvmStatic untuk interoperabilitas Java, atau perluas dengan fungsi ekstensi untuk pembantu yang berperilaku seperti statis.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “companion object: Anggota Bergaya Statis di Kotlin” gratis?

Ya — teks lengkap “companion object: Anggota Bergaya Statis di Kotlin” 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 “companion object: Anggota Bergaya Statis di Kotlin”?

Tambahkan companion object ke class untuk menyimulasikan metode dan konstanta statis. 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 2 dari 4.

Berapa lama pelajaran “companion object: Anggota Bergaya Statis di Kotlin” 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. Deklarasi object: Singleton Kotlin
  2. companion object: Anggota Bergaya Statis di Kotlin
  3. Objek Anonim dan Ekspresi Object
  4. Metode Factory dengan companion object
← Kembali ke Kotlin Academy