Class adalah cetak biru yang mendefinisikan struktur dan perilaku object. Object adalah instans konkret yang dibuat berdasarkan cetak biru tersebut, menyimpan data sendiri di memori. Pada chapter ini kita akan menulis class Kotlin pertama, membuat object dari class tersebut, dan mengenal tiga anggota inti class: property, method, dan constructor. Pemahaman ini menjadi pintu masuk untuk seluruh materi object-oriented di Kotlin.
Mendeklarasikan Class #
Deklarasi class Kotlin dimulai dengan keyword class, diikuti nama class, lalu konstruktor utama dalam tanda kurung. Nama class memakai konvensi PascalCase seperti Pengguna atau Peliharaan. Berikut bentuk paling ringkas sebuah class yang sudah membawa dua property sekaligus deklarasi constructor.
class Pengguna(val nama: String, var umur: Int)Tanda kurung setelah nama class adalah primary constructor. Keyword val dan var di dalamnya sekaligus mendeklarasikan property. val menandakan property read-only (tidak dapat ditugaskan ulang), sedangkan var menandakan property mutable (dapat ditugaskan ulang). Kotlin tidak mengenal keyword new saat membuat object — pemanggilan langsung dengan tanda kurung sudah dianggap instansiasi.
Membuat Object dari Class #
Instansiasi object dilakukan dengan menulis nama class diikuti argumen yang sesuai dengan parameter primary constructor. Hasil instansiasi disimpan ke variabel dengan keyword val bila referensi tidak berubah, atau var bila referensi akan ditugaskan ulang. Perhatikan contoh berikut yang membuat dua object Pengguna dan menggunakan method-nya.
// pengguna.kt
// Mendemonstrasikan deklarasi class sederhana, instansiasi object, dan anggota class.
class Pengguna(val nama: String, var umur: Int) {
fun sapa(): String {
return "Halo, saya $nama, umur $umur tahun."
}
fun ulangTahun() {
umur += 1
}
}
fun main() {
val budi = Pengguna("Budi", 17)
println(budi.sapa())
budi.ulangTahun()
println("Setelah ulang tahun: ${budi.umur} tahun")
val siti = Pengguna("Siti", 20)
println(siti.sapa())
println("Jumlah pengguna dibuat: 2")
}Output yang Dihasilkan:
Halo, saya Budi, umur 17 tahun.
Setelah ulang tahun: 18 tahun
Halo, saya Siti, umur 20 tahun.
Jumlah pengguna dibuat: 2Mari kita bedah bagian-bagian penting dari kode di atas:
class Pengguna(val nama: String, var umur: Int): deklarasi class dengan primary constructor. Parameterval namamenjadi property read-only, sedangkanvar umurmenjadi property mutable.fun sapa(): String: method yang mengembalikanString. Body method mengakses propertynamadanumurmelalui referensi implisitthis.fun ulangTahun(): method yang tidak mengembalikan nilai (tipe kembalian implisitUnit). Method ini menambah nilai propertyumursebesar satu.val budi = Pengguna("Budi", 17): instansiasi object tanpa keywordnew. Variabelbudimenampung referensi ke objectPenggunabaru di memori.budi.ulangTahun(): pemanggilan method mengubah state internal objectbudi. Propertyumurpadabudikini bernilai18, sementara propertyumurpadasititetap20karena masing-masing object memiliki salinan field sendiri.
Tiga Anggota Utama Class #
Class Kotlin umumnya memuat tiga jenis anggota yang saling melengkapi:
| Anggota | Fungsi | Contoh |
|---|---|---|
| Property | Menyimpan data milik object | val nama: String, var umur: Int |
| Method | Mendefinisikan perilaku object | fun sapa(): String, fun ulangTahun() |
| Constructor | Menyiapkan object saat pertama dibuat | class Pengguna(val nama, var umur) |
Property dan method dapat dipanggil dari luar class menggunakan notasi titik: budi.nama untuk membaca property, dan budi.ulangTahun() untuk memanggil method. Akses dari luar class dapat dibatasi dengan visibility modifier yang akan kita bahas pada chapter tersendiri.
Object Bersifat Independen #
Setiap object yang dibuat dari class yang sama tetap memiliki state sendiri. Memodifikasi property umur pada budi tidak memengaruhi siti. Hal ini terjadi karena setiap pemanggilan constructor mengalokasikan blok memori baru untuk menampung field-field object. Dengan demikian, sebuah class dapat dipakai membuat ratusan object tanpa saling mengganggu.
Referensi Lanjutan #
- Classes and Inheritance — panduan resmi mendeklarasikan class dan membuat instance
Pada chapter Properties berikutnya, kita akan menelusuri lebih dalam cara property dideklarasikan, diakses, dan dimodifikasi — termasuk perbedaan val dengan var serta konsep backing field yang bekerja di balik layar.