Menu
CoddyTech

Konstruktor utama

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Kotlin di Coddy. Pelajaran 3 dari 57.

Sebagian besar class Kotlin menerima nilai awalnya dalam konstruktor utama, yang ditulis di dalam tanda kurung setelah nama class. val atau var di depan parameter sekaligus menjadikannya property:

class Book(val title: String, var pages: Int)

Di dalam main:

val book = Book("Dune", 412)
println(book.title)
book.pages += 8
println(book.pages)

Output:

Dune
420

Parameter tanpa val atau var hanya tersedia saat instance dibuat, misalnya untuk menghitung property. Property val tidak dapat ditetapkan ulang setelah dibuat, sedangkan property var dapat:

class Temperature(celsius: Double) {
    val fahrenheit = celsius * 9 / 5 + 32
}

Di dalam main:

val t = Temperature(100.0)
println(t.fahrenheit)

Output:

212.0

Parameter konstruktor dapat memiliki nilai default dan dapat diberikan berdasarkan nama, sehingga satu konstruktor mencakup banyak cara untuk membuat sebuah instance:

class Timer(val seconds: Int, val label: String = "timer")

Di dalam main:

val egg = Timer(300, "egg")
val quick = Timer(30)
val named = Timer(label = "tea", seconds = 180)
println("${egg.label} ${egg.seconds}")
println("${quick.label} ${quick.seconds}")
println("${named.label} ${named.seconds}")

Output:

egg 300
timer 30
tea 180

Di dalam body class, this merujuk pada instance saat ini. this diperlukan ketika parameter method memiliki nama yang sama dengan property:

class Player(var name: String) {
    fun rename(name: String) {
        this.name = name
    }
}

Di dalam main:

val p = Player("anon")
p.rename("Ada")
println(p.name)

Output:

Ada
challenge icon

Tantangan

Mudah

Deklarasikan class Account dengan konstruktor utama: owner yang hanya bisa dibaca dan balance yang bisa diubah serta memiliki nilai default 0. Tambahkan summary(), yang mengembalikan Ada has 150.

Code yang disediakan membaca owner dan, jika ada baris kedua, saldo awal. Code tersebut membuat account dengan atau tanpa saldo, lalu mencetak summary().

Kodemu ditulis di Account.kt. Main.kt berisi code input/output yang disediakan dan tidak bisa diedit.

Coba sendiri

fun main() {
    // Kode input/output yang disediakan: biarkan apa adanya
    val input = generateSequence(::readLine).toList()
    val account = if (input.size > 1) Account(input[0], input[1].toInt()) else Account(input[0])
    println(account.summary())
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Playground Kotlin