Belajar Dasar Kotlin: Kelas
Apa itu Kelas?
Kelas sangat berguna untuk menstruktur sebuah data.
Misalkan kita ingin membuat data yang merepresentasikan informasi orang berikut:
Rohmat berkelamin laki-laki dan sudah menikah.
Untuk merepresentasikan kelas tersebut kita bisa menggunakan Kelas. Bisa dikatakan Kelas merupakan struktur dari sebuah objek. Objek bisa dimisalkan sebagai data yang berada pada memori. Informasi di atas bisa kita representasikan dengan Kelas/struktur seperti berikut.
Properti | Tipe Data | Nilai |
---|---|---|
nama | String | Rohmat |
kelamin | String | Laki |
menikah | Boolean | true |
Kode untuk kelas di atas bisa ditulis seperti ini:
class Orang {
var nama: String = "Rohmat"
var kelamin: String = "Laki"
var menikah: Boolean = true
}
class
merupakan keyword yang digunakan untuk mendeklarasikan Kelas. Orang
adalah nama dari
kelas. nama
, kelamin
, menikah
merupakan variabel yang berada di dalam Kelas.
Ingat: Kelas hanya memberikan struktur kepada objek/data. Untuk membuat data/objek kita harus membuatnya sendiri.
Untuk membuat objek dari kelas Orang
kita bisa melakukannya seperti ini:
val orang = Orang()
Untuk mengakses variabel yang berada di dalam objek kita bisa menggunakan titik (.
).
println(orang.nama) // Rohmat
println(orang.kelamin) // Laki
println(orang.menikah) // true
Anggota Kelas
Anggota kelas adalah apa pun yang berada di dalam Kelas. Mari kita lihat kelas tadi lagi:
class Orang {
var nama: String = "Rohmat"
var kelamin: String = "Laki"
var menikah: Boolean = true
}
Variabel nama
, kelamin
dan menikah
disebut juga anggota dari kelas Orang. Variabel anggota
sebuah kelas juga disebut sebagai properti sebuah kelas. Anggota kelas bisa diakses dengan titik
seperti tadi. Anggota kelas juga dapat berupa fungsi dan bisa diakses dengan titik. Contonhya
seperti berikut:
class Orang {
var nama: String = "Rohmat"
var kelamin: String = "Laki"
var menikah: Boolean = true
fun say() {
println("Nama: $nama, Kelamin: $kelamin, ${if (menikah) "Sudah" else "Belum"} menikah")
}
}
val orang = Orang()
orang.say() // Nama: Rohmat, Kelamin: Laki, Sudah menikah
Anggota kelas yang berupa variabel bisa berupa val
maupun var
. Operasi apa pun yang bisa
dilakukan kepada variabel biasa juga bisa dilakukan kepada variabel anggota kelas.
val orang = Orang()
orang.nama = "Satya"
orang.menikah = false
orang.say() // Nama: Satya, Kelamin: Laki, Belum menikah
Konstruktor
Konstruktor merupakan fungsi yang digunakan untuk membuat objek dari kelas tertentu. Kita telah banyak memanggil konstruktor pada contoh sebelumnya.
val orang = Orang()
Orang()
memanggil konstruktor dari kelas Orang
.
Konstruktor kelas dapat memiliki parameter dan bisa dideklarasikan seperti berikut:
class Orang(namaOrang: String, kelaminOrang: String, menikahOrang: Boolean) {
var nama: String = namaOrang
var kelamin: String = kelaminOrang
var menikah: Boolean = menikahOrang
fun say() {
println("Nama: $nama, Kelamin: $kelamin, ${if (menikah) "Sudah" else "Belum"} menikah")
}
}
namaOrang
, kelaminOrang
, dan menikahOrang
merupakan parameter dari konstruktor kelas Orang
.
Nilai parameter konstruktor tidak bisa diakses di dalam fungsi anggota kelas, tapi bisa digunakan
menjadi nilai awal variabel.
Saat kita memanggil konstruktor kelas di atas, kita harus memberi argumen untuk parameter-parameternya:
val orang = Orang("Arif", "Laki", true)
orang.say() // Nama: Arif, Kelamin: Laki, Sudah menikah
Konstruktor yang dideklarasikan setelah nama kelas disebut konstruktor utama (primary
constructor). Dalam konstruktor utama, parameter bisa langsung dijadikan variabel anggota kelas
dengan menambahkan var
/val
ke parameter.
class Orang(var nama: String, var kelamin: String, var menikah: Boolean) {
fun say() {
println("Nama: $nama, Kelamin: $kelamin, ${if (menikah) "Sudah" else "Belum"} menikah")
}
}
Keyword this
Kata kunci this
berisi objek saat ini dari sebuah Kelas.
class Orang(...) {
...
fun say() {
println("Nama: ${this.nama}, Kelamin: ${this.kelamin}, ${if (this.menikah) "Sudah" else "Belum"} menikah")
}
}
val orang = Orang("Arif", "Laki", true)
orang.say() // Nama: Arif, Kelamin: Laki, Sudah menikah
Saat fungsi say
dipanggil this
akan berisi objek yang memanggil fungsi ini. Jadi this.nama
akan sama dengan nama
, this.kelamin
sama dengan kelamin
, dst.