Pada artikel ini, Anda akan belajar tentang kelas abstrak dan cara menerapkannya di Kotlin (dengan bantuan contoh).
Seperti Java, abstract
kata kunci digunakan untuk mendeklarasikan kelas abstrak di Kotlin. Kelas abstrak tidak dapat dibuat instance-nya (Anda tidak dapat membuat objek dari kelas abstrak). Namun, Anda dapat mewarisi subclass dari can mereka.
Anggota (properti dan metode) kelas abstrak adalah non-abstrak kecuali Anda secara eksplisit menggunakan abstract
kata kunci untuk membuatnya abstrak. Mari kita ambil contoh:
abstract class Person (var age: Int = 40 fun displaySSN (ssn: Int) (println ("SSN saya adalah $ ssn.")) abstract fun displayJob (description: String))
Sini,
- kelas abstrak
Person
dibuat. Anda tidak dapat membuat objek kelas. - kelas memiliki usia properti non-abstrak dan metode non-abstrak
displaySSN()
. Jika Anda perlu mengganti anggota ini di subclass, mereka harus ditandai denganopen
kata kunci. - Kelas memiliki metode abstrak
displayJob()
. Itu tidak memiliki implementasi apa pun dan harus diganti dalam subkelasnya.
Catatan: Kelas abstrak selalu terbuka. Anda tidak perlu secara eksplisit menggunakan open
kata kunci untuk mewarisi subclass darinya.
Contoh: Kelas dan Metode Abstrak Kotlin
abstract class Person(name: String) ( init ( println("My name is $name.") ) fun displaySSN(ssn: Int) ( println("My SSN is $ssn.") ) abstract fun displayJob(description: String) ) class Teacher(name: String): Person(name) ( override fun displayJob(description: String) ( println(description) ) ) fun main(args: Array) ( val jack = Teacher("Jack Smith") jack.displayJob("I'm a mathematics teacher.") jack.displaySSN(23123) )
Saat Anda menjalankan program, hasilnya adalah:
Nama saya Jack Smith. Saya seorang guru matematika. SSN saya adalah 23123.
Di sini, kelas Teacher
diturunkan dari kelas abstrak Person
.
Sebuah jack objek dari kelas Guru dipakai. Kami telah mengirimkan "Jack Smith"
sebagai parameter ke konstruktor utama saat membuatnya. Ini mengeksekusi blok penginisialisasi Person
kelas.
Kemudian displayJob()
metode dipanggil menggunakan objek jack. Perhatikan, bahwa displayJob()
metode ini dideklarasikan abstrak di kelas dasar, dan diganti di kelas turunan.
Akhirnya, displaySSN()
metode dipanggil menggunakan objek jack. Metode ini non-abstrak dan dideklarasikan di kelas Person (dan tidak dideklarasikan di Teacher
kelas).
Bacaan yang Disarankan: Antarmuka Kotlin
Antarmuka Kotlin mirip dengan kelas abstrak. Namun, antarmuka tidak dapat menyimpan status sedangkan kelas abstrak bisa.
Artinya, antarmuka mungkin memiliki properti tetapi harus abstrak atau harus menyediakan implementasi pengakses. Padahal, properti kelas abstrak tidak wajib menjadi abstrak.