Kelas Abstrak Kotlin dan Ahli Abstrak

Dalam artikel ini, anda akan belajar mengenai kelas abstrak dan bagaimana menerapkannya di Kotlin (dengan bantuan contoh).

Seperti Java, abstractkata 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 abstractkata 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 Persondibuat. 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 dengan openkata kunci.
  • Kelas mempunyai kaedah abstrak displayJob(). Ia tidak mempunyai pelaksanaan dan harus diganti dalam subkelasnya.

Catatan: Kelas abstrak sentiasa dibuka. Anda tidak perlu menggunakan openkata 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 Teacherberasal dari kelas abstrak Person.

Jack objek kelas Guru dibuat. Kami telah "Jack Smith"memberikan parameter kepada pembina utama semasa membuatnya. Ini melaksanakan blok pemula Personkelas.

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

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.

Artikel menarik...