0Pricing
Kotlin Academy · Pelajaran

Dasar Data Class: Metode yang Dibuat Otomatis

Pahami apa saja yang dibuat oleh data class: equals, hashCode, toString, copy.

Dasar Data Class: Metode yang Dibuat Otomatis adalah pelajaran Kotlin Academy gratis di CoddyKit. Ini adalah pelajaran 1 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.

Apa Itu Kelas Data?

Kelas data adalah kelas yang tujuan utamanya menyimpan nilai. Compiler Kotlin secara otomatis membuat fungsi equals, hashCode, toString, copy, dan componentN untuk Anda.

Mendeklarasikan Kelas Data

Tambahkan data di depan kelas biasa. Semua parameter konstruktor utama harus berupa val atau var.

data class User(val name: String, val age: Int)
fun main() {
    val u = User("Ada", 35)
    println(u)
}

toString yang Dibuat Otomatis

Compiler membuat toString yang mencantumkan setiap properti berdasarkan namanya.

data class Point(val x: Int, val y: Int)
fun main() {
    println(Point(3, 5)) // Point(x=3, y=5)
}

equals yang Dibuat Otomatis

equals membandingkan semua nilai properti—dua instance dengan field yang sama dianggap setara, terlepas dari identitas referensinya.

data class Coord(val lat: Double, val lng: Double)
fun main() {
    val a = Coord(41.0, 29.0)
    val b = Coord(41.0, 29.0)
    println(a == b)      // true (structural)
    println(a === b)     // false (reference)
}

hashCode yang Dibuat Otomatis

hashCode konsisten dengan equals: objek yang setara menghasilkan hash yang sama, sehingga kelas data berfungsi dengan benar di dalam set dan sebagai kunci peta.

data class Key(val id: Int, val tag: String)
fun main() {
    val map = mapOf(Key(1, "a") to "one")
    println(map[Key(1, "a")]) // one
}

copy yang Dibuat Otomatis

copy() membuat instance baru dengan nilai field yang sama, sehingga Anda dapat mengganti setiap field melalui argumen bernama.

data class Config(val host: String, val port: Int, val tls: Boolean)
fun main() {
    val dev = Config("localhost", 8080, false)
    val prod = dev.copy(host = "prod.example.com", tls = true)
    println(prod) // Config(host=prod.example.com, port=8080, tls=true)
}

componentN yang Dibuat Otomatis

Setiap properti mendapatkan fungsi componentN() (component1, component2, ...) yang memungkinkan destructuring.

data class Pair2(val first: String, val second: Int)
fun main() {
    val p = Pair2("Ada", 35)
    val (name, age) = p
    println("$name is $age")
}

Hal yang Tidak Dilakukan Kelas Data

Kelas data tidak membuat toString untuk field yang diwarisi, secara default bersifat final, dan tidak dapat berupa abstract, open, sealed, atau inner.

data class Sample(val n: Int)
// open data class Bad(...) // ERROR
// sealed data class Bad(...) // ERROR
fun main() { println(Sample(1)) }

Properti di Luar Konstruktor Utama

Properti yang dideklarasikan di badan kelas TIDAK berpartisipasi dalam equals, hashCode, toString, atau copy.

data class Person(val name: String) {
    var nickname: String = ""
}
fun main() {
    val a = Person("Ada").apply { nickname = "Augusta" }
    val b = Person("Ada").apply { nickname = "Different" }
    println(a == b)   // true — only name matters
    println(a)         // Person(name=Ada)
}

Nilai Default

Gabungkan data class dengan parameter default untuk konstruksi yang fleksibel.

data class Request(
    val url: String,
    val method: String = "GET",
    val headers: Map<String, String> = emptyMap()
)
fun main() {
    println(Request("https://api.example.com"))
}

Praktik: Kelas DTO

Kelas data sangat cocok untuk DTO, respons API, dan objek nilai.

data class ApiResponse(
    val status: Int,
    val body: String,
    val timestamp: Long
)
fun main() {
    val ok = ApiResponse(200, "{}", System.currentTimeMillis())
    println(ok)
}

Pemeriksaan Cepat

Metode mana yang TIDAK dibuat otomatis oleh compiler Kotlin untuk kelas data?

Ringkasan

data class secara otomatis membuat equals, hashCode, toString, copy, dan componentN dari properti konstruktor utamanya. Properti di luar konstruktor tidak disertakan. Gunakan kelas data untuk DTO, objek nilai, dan wadah nilai terkait apa pun.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Dasar Data Class: Metode yang Dibuat Otomatis” gratis?

Ya — teks lengkap “Dasar Data Class: Metode yang Dibuat Otomatis” 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 “Dasar Data Class: Metode yang Dibuat Otomatis”?

Pahami apa saja yang dibuat oleh data class: equals, hashCode, toString, copy. 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 1 dari 4.

Berapa lama pelajaran “Dasar Data Class: Metode yang Dibuat Otomatis” 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. Dasar Data Class: Metode yang Dibuat Otomatis
  2. Menyalin dengan copy() dan Penggantian Sebagian
  3. Deklarasi Destrukturisasi dengan componentN
  4. Data Class dalam Koleksi dan sebagai Kunci Map
← Kembali ke Kotlin Academy