Kotlin Academy · Pelajaran

Konstruktor Utama dan Parameter Properti

Deklarasikan class dengan konstruktor utama dan deklarasi properti secara langsung.

Pelajaran 1 dari 413 langkah

Konstruktor Utama dan Parameter Properti 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.

Konstruktor Utama

Kelas Kotlin mendeklarasikan konstruktor utama tepat setelah nama kelas di dalam tanda kurung. Tidak ada isi metode — hanya daftar parameter.

Kelas Paling Sederhana

Konstruktor utama tanpa pengubah tidak terlihat setelah nama kelas.

class Greeter(val name: String) {
    fun greet() = "Hello, $name!"
}
fun main() {
    println(Greeter("Ada").greet())
}

Parameter Properti

Tambahkan awalan val atau var pada parameter konstruktor untuk menjadikannya properti kelas dalam satu langkah.

class Person(val name: String, var age: Int)
fun main() {
    val p = Person("Bob", 30)
    println("${p.name} is ${p.age}")
    p.age = 31
    println("Now ${p.age}")
}

Parameter Tanpa val/var

Parameter konstruktor tanpa val/var bersifat lokal bagi konstruktor — parameter tersebut dapat digunakan dalam blok inisialisasi atau penginisialisasi properti, tetapi tidak dapat diakses setelahnya.

class Logger(prefix: String) {
    val msg = "$prefix: ready"
}
fun main() {
    val l = Logger("[INFO]")
    println(l.msg)
    // l.prefix // ERROR — not a property
}

Nilai Parameter Bawaan

Berikan nilai bawaan untuk parameter konstruktor agar tidak perlu menulis kode berulang untuk kelebihan beban.

class User(
    val name: String,
    val age: Int = 0,
    val email: String = ""
)
fun main() {
    println(User("Ana").age)               // 0
    println(User("Ben", 25).email)         // ""
    println(User("Cal", 30, "c@x.io").email)
}

Argumen Bernama

Lewati pengurutan berdasarkan posisi dan beri nama parameter saat pemanggilan — terutama berguna jika menggunakan nilai bawaan.

class HttpClient(
    val baseUrl: String,
    val timeoutMs: Int = 5000,
    val retries: Int = 3
)
fun main() {
    val c = HttpClient(
        baseUrl = "https://api.example.com",
        retries = 5
    )
    println("retries=${c.retries} timeout=${c.timeoutMs}")
}

Visibilitas pada Konstruktor

Gunakan private constructor untuk mencegah pembuatan instans dari luar — umum digunakan bersama metode pabrik.

class Singleton private constructor() {
    companion object {
        val instance = Singleton()
    }
}
fun main() {
    val s = Singleton.instance
    println(s)
}

Konstruktor Sekunder

Tambahkan konstruktor tambahan dengan kata kunci constructor. Konstruktor tersebut harus mendelegasikan ke konstruktor utama dengan this(...).

class Point(val x: Int, val y: Int) {
    constructor(value: Int) : this(value, value)
}
fun main() {
    println("${Point(3).x}, ${Point(3).y}") // 3, 3
}

Konstruktor dengan Visibilitas

Anda dapat menggunakan visibilitas yang berbeda untuk setiap konstruktor — berguna untuk pustaka.

class Lib internal constructor(val key: String) {
    companion object {
        fun create(key: String) = Lib(key)
    }
}
fun main() {
    println(Lib.create("abc").key)
}

Ringkasan Blok Inisialisasi

Kode yang harus dijalankan selama pembuatan instans ditempatkan dalam blok init { }. Beberapa blok inisialisasi dijalankan sesuai urutan dalam kode sumber.

class Validator(val value: String) {
    init { require(value.isNotBlank()) { "value cannot be blank" } }
}
fun main() {
    println(Validator("ok").value)
    // Validator("") // throws IllegalArgumentException
}

Menggabungkan Properti dan Logika

Deklarasi properti, konstruktor sekunder, dan blok inisialisasi dapat digabungkan menjadi alur pemrosesan inisialisasi yang fleksibel.

class Account(
    val owner: String,
    initialBalance: Double = 0.0
) {
    var balance: Double = initialBalance
        private set
    init {
        require(initialBalance >= 0) { "balance must be non-negative" }
    }
    fun deposit(amount: Double) { balance += amount }
}
fun main() {
    val a = Account("Alice", 100.0)
    a.deposit(50.0)
    println("${a.owner}: ${a.balance}") // Alice: 150.0
}

Pemeriksaan Singkat

Apa yang dilakukan kata kunci val ketika digunakan pada parameter konstruktor utama?

Ringkasan

Konstruktor utama berada di bagian kepala kelas. Gunakan val/var untuk parameter properti; parameter tanpa awalan hanya bersifat lokal bagi konstruktor. Tambahkan nilai bawaan untuk mengurangi kelebihan beban, dan jalankan logika persiapan dalam blok init. Konstruktor sekunder mendelegasikan tugas melalui this(...).

Gratis untuk memulai

Belajar Kotlin dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
51
Pelajaran
203

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Konstruktor Utama dan Parameter Properti” gratis?

Ya — teks lengkap “Konstruktor Utama dan Parameter Properti” 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 “Konstruktor Utama dan Parameter Properti”?

Deklarasikan class dengan konstruktor utama dan deklarasi properti secara langsung. 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 “Konstruktor Utama dan Parameter Properti” 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. Konstruktor Utama dan Parameter Properti
  2. Blok init dan Urutan Inisialisasi
  3. Getter dan Setter Kustom dengan field
  4. lateinit dan Inisialisasi Tertunda
← Kembali ke Kotlin Academy