Kelas Abstrak Kotlin dan Anggota Abstrak

Pada artikel ini, Anda akan belajar tentang kelas abstrak dan cara menerapkannya di Kotlin (dengan bantuan contoh).

Seperti Java, abstractkata 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 abstractkata 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 Persondibuat. 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 dengan openkata 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 openkata 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 Teacherditurunkan 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 Personkelas.

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 Teacherkelas).

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.

Artikel yang menarik...