Dalam artikel ini, anda akan belajar mengenai kelas abstrak dan bagaimana menerapkannya di Kotlin (dengan bantuan contoh).
Seperti Java, abstract
kata kunci digunakan untuk menyatakan kelas abstrak di Kotlin. Kelas abstrak tidak dapat dijadikan contoh (anda tidak boleh membuat objek kelas abstrak). Walau bagaimanapun, anda boleh mewarisi subkelas dari mereka.
Anggota (sifat dan kaedah) kelas abstrak tidak abstrak melainkan anda dengan jelas menggunakan abstract
kata kunci untuk menjadikannya abstrak. Mari kita ambil contoh:
abstrak kelas Orang (umur: Int = 40 paparan yang menyeronokkanSSN (ssn: Int) (println ("SSN saya adalah $ ssn.")) abstrak menyeronokkanJob (keterangan: Rentetan))
Di sini,
- kelas abstrak
Person
dibuat. Anda tidak boleh membuat objek kelas. - kelas mempunyai usia harta benda yang tidak abstrak dan kaedah yang tidak abstrak
displaySSN()
. Sekiranya anda perlu mengatasi ahli ini dalam subkelas, mereka harus ditandai denganopen
kata kunci. - Kelas mempunyai kaedah abstrak
displayJob()
. Ia tidak mempunyai pelaksanaan dan harus diganti dalam subkelasnya.
Catatan: Kelas abstrak sentiasa dibuka. Anda tidak perlu menggunakan open
kata kunci secara eksplisit untuk mewarisi subkelas dari mereka.
Contoh: Kelas dan Kaedah 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) )
Semasa anda menjalankan program, outputnya adalah:
Nama saya Jack Smith. Saya seorang guru matematik. SSN saya ialah 23123.
Di sini, kelas Teacher
berasal dari kelas abstrak Person
.
Jack objek kelas Guru dibuat. Kami telah "Jack Smith"
memberikan parameter kepada pembina utama semasa membuatnya. Ini melaksanakan blok pemula Person
kelas.
Kemudian, displayJob()
kaedah dipanggil menggunakan objek jack. Perhatikan, displayJob()
kaedah itu dinyatakan abstrak pada kelas asas, dan diganti pada kelas turunan.
Akhirnya, displaySSN()
kaedah dipanggil menggunakan objek jack. Kaedahnya tidak abstrak dan dinyatakan dalam kelas Person (dan tidak dinyatakan dalam Teacher
kelas).
Bacaan yang Disyorkan: Antara muka Kotlin
Antaramuka Kotlin serupa dengan kelas abstrak. Walau bagaimanapun, antara muka tidak dapat menyimpan keadaan sedangkan kelas abstrak dapat.
Maksudnya, antara muka mungkin mempunyai harta tetapi perlu abstrak atau harus menyediakan pelaksanaan aksesor. Manakala, tidak wajib bagi harta benda kelas abstrak menjadi abstrak.