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
420Parameter 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.0Parameter 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 180Di 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:
AdaTantangan
MudahDeklarasikan 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())
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1class dan object
Bekerja dengan fileMendefinisikan classKonstruktor utamaBlok init dan validasiKonstruktor sekunderRingkasan: Kartu Perpustakaan2property dan Enkapsulasi
Accessor KustomModifier VisibilitasSetter Privatlazy dan lateinitRingkasan: Rekening Bank5Interface
Mendeklarasikan Interfacemethod DefaultBeberapa InterfaceInterface sebagai TipeUlasan: Metode Pembayaran11Proyek: Pengelolaan Perpustakaan
Buku dan AnggotaPeminjaman BukuLatihan sendiri: Playground Kotlin