Memahami Keyword “open” di Bahasa Pemrograman Kotlin

Bagus Aji Santoso
3 min readOct 19, 2019

--

Diterjemahkan dari Understanding open Keyword in Kotlin

Di artikel ini kita akan belajar tentang keyword “open” yang ada di bahasa pemrograman Kotlin. Kita akan pelajari mengapa menggunakan keyword ini dan bagaimana menggunakannya dengan nama suatu kelas, fungsi atau variabel.

Kita semua tahu bahwa pewarisan adalah inti dari semua bahasa pemrograman berorientasi objek (PBO/OOP). Konsep ini adalah suatu proses untuk mentransfer suatu properti dan karakteristik dari satu kelas ke kelas lain. Dalam bahasa yang sederhana, jika sebuah kelas bernama ClassA memiliki beberapa variabel dan fungsi, serta ada kelas lain bernama ClassB yang mewariskan ClassA, maka ClassB akan bisa menggunakan variabel dan method yang dimiliki oleh ClassA. ClassA di sini disebut dengan Parent Class disebut dengan Child Class. Pewarisan memungkinkan penggunaan kembali suatu kelas (re-useability). Berikut contoh dari sebuah pewarisan:

Seperti yang kalian tahu MindOrks memiliki berbagai kelas online seperti Android for Professionals, Android for Beginners, dan Data Structures & Algorithms. Jadi, ada beberapa kelas berbeda namun mereka sama-sama mengajarkan sesuatu. Untuk bisa belajar di kelas manapun, pertama kita harus register dulu, kemudian membayar kelas dan setelah kelas selesai kita akan dapat sertifikat.

Mari kita pikirkan situasi di atas dalam konsep oop. Bayangkan MindOrks sebagai sebuah kelas, AndroidPro (untuk kelas Android for Profesional) juga sebuah kelas, AndroidBeg (untuk kelas Android for Beginners) juga sebuah kelas, serta DSAlgo (untuk kelas Android for Beginners) juga sebuah kelas.

Sekarang, AndroidPro, AndroidBeg dan DSAlgo memiliki tiga proses yang sama, anggap saja ada proses bernama courseReg(), feePay(), dan certificateGeneration(). Jadi, daripada menuliskan tiga method tersebut secara terpisah di masing-masing kelas, kita bisa meng-implement method tersebut dengan mewariskan kelas MindOrks. Sehingga, MindOrks sekarang menjadi Parent class dari AndroidPro, AndroidBeg, dan DSAlgo yang menjadi Child class-nya.

Pewarisan Kotlin

Dalam bahasa pemrograman Kotlin, untuk mewariskan satu kelas ke kelas lain, gunakan sintaks:

//Parent class
open class MindOrks {
}//Child class
class AndroidPro : MindOrks(){
}

Pada contoh di atas, kita mewariskan kelas MindOrks ke AndroidPro, hasilnya MindOrks menjadi Parent class sedangkan AndroidPro menjadi Child class.

Keyword “open”

Dalam bahasa pemrograman Kotlin, semua kelas adalah final secara otomatis. Kelas yang final tidak bisa diwariskan. Kalau kalian pernah belajar Java, maka di Java adalah kebalikannya, mereka akan otomatis bisa diwariskan dan baru final kita kita mengaturnya secara eksplisit.

Jadi, agar suatu kelas bisa diwariskan, kita mesti menandainya dengan keyword open agar tidak mendapat pesan error “type is final so can’t be inherited”.

Keyword “open” di depan fungsi

Sama seperti kelas, semua fungsi yang ada di Kotlin akan otomatis final, artinya tidak bisa di override.

Function overriding adalah proses penulisan ulang fungsi yang bersumber di Parent Class dari dalam Child class. Fungsi yang di tulis ulang di Child class harus diberikan keyword override.

Berikut contoh function overriding di Kotlin:

open class MindOrks {
//gunakan keyword open agar bisa di override
open fun courseName(){
println("Course Name")
}
}
class AndroidPro : MindOrks(){
//gunakan keyword override agar fungsi ini menulis ulang method di kelas MindOrks
override fun courseName() {
println("Android for Professionals")
}
}

Pada contoh di atas, Parent class MindOrks memiliki fungsi bernama courseName() dan kelas MindOrks diwariskan oleh AndroidPro. Lalu, di dalam kelas AndroidPro kita meng-override fungsi courseName().

Keyword “open” di depan variabel

Sama seperti kelas dan fungsi, variabel di Kotlin akan otomatis final. Jadi, kalau ingin meng-override-nya di kelas Child, kita perlu menuliskan open di Parent class. Berikut ini contohnya:

open class MindOrks {
//gunakan keyword open untuk memungkinkan child class meng-override-nya
open val courseId: Int = 0
//gunakan keyword open agar child class bisa meng-override-nya open fun courseName(){
println("Course Name")
}
}
class AndroidPro : MindOrks(){
//gunakan keyword override untuk meng-override variabel
override val courseId: Int = 1
//gunakan keyword override untuk meng-override fungsi
override fun courseName() {
println("Android for Professionals")
}
}

Pada contoh di atas, courseId di kelas MindOrks memiliki nilai 0 tapi di Child class mislanya AndroidPro, nilainya diubah ke 1.

In the above example, the courseId in the MindOrks class is set to 0 but in the Child class i.e. in AndroidPro class, the value is changed to 1.

Kesimpulan

Di Kotlin, kelas, fungsi dan variabel akan otomatis diatur sebagai final. Oleh karena itu agar suatu kelas bisa di wariskan oleh kelas lain, dan kelas lain bisa meng-override fungsi atau variabel di dalamnya, kita mesti mengaturnya sebagai open.

Semoga bermanfaat.

--

--

No responses yet