Kelas Kotlin Dimeteraikan

Dalam artikel ini, anda akan belajar mengenai kelas yang dimeteraikan, bagaimana kelas dibuat, dan kapan menggunakannya dengan bantuan contoh.

Kelas tertutup digunakan apabila nilai hanya boleh memiliki salah satu jenis dari kumpulan terhad (hierarki terhad).

Sebelum membincangkan butiran mengenai kelas yang dimeteraikan, mari kita meneroka masalah yang mereka selesaikan. Mari kita ambil contoh (diambil dari laman web rasmi Kotlin - artikel kelas yang dimeteraikan):

 class Expr class Const(val value: Int) : Expr class Sum(val left: Expr, val right: Expr) : Expr fun eval(e: Expr): Int = when (e) ( is Const -> e.value is Sum -> eval(e.right) + eval(e.left) else -> throw IllegalArgumentException("Unknown expression") )

Dalam program di atas, kelas asas Expr mempunyai dua kelas turunan Const (mewakili nombor) dan Sum (mewakili jumlah dua ungkapan). Di sini, wajib menggunakan elsecabang untuk keadaan lalai ketika ungkapan.

Sekarang, jika anda memperoleh subkelas baru dari Exprkelas, penyusun tidak akan mengesan apa-apa kerana elsecawangan mengendalikannya yang boleh menyebabkan pepijat. Akan lebih baik sekiranya penyusun mengeluarkan ralat ketika kita menambahkan subkelas baru.

Untuk menyelesaikan masalah ini, anda boleh menggunakan kelas tertutup. Seperti yang disebutkan, kelas tertutup menyekat kemungkinan membuat subkelas. Dan, apabila anda mengendalikan semua subkelas kelas tertutup dalam whenungkapan, tidak perlu menggunakan elsecabang.

Untuk membuat kelas tertutup, pengubah dimeterai digunakan. Sebagai contoh,

 kelas tertutup Expr

Contoh: Kelas Dimeteraikan

Inilah cara anda dapat menyelesaikan masalah di atas menggunakan kelas tertutup:

 sealed class Expr class Const(val value: Int) : Expr() class Sum(val left: Expr, val right: Expr) : Expr() object NotANumber : Expr() fun eval(e: Expr): Int = when (e) ( is Const -> e.value is Sum -> eval(e.right) + eval(e.left) NotANumber -> java.lang.Double.NaN ) 

Seperti yang anda lihat, tidak ada elsecabang. Sekiranya anda memperoleh subkelas baru dari Exprkelas, penyusun akan mengeluh kecuali subkelas dikendalikan dalam whenungkapan.

Beberapa Nota Penting

  • Semua subkelas kelas tertutup mesti diisytiharkan dalam fail yang sama di mana kelas dimeteraikan diisytiharkan.
  • Kelas tertutup abstrak dengan sendirinya, dan anda tidak dapat menunjukkan objek daripadanya.
  • Anda tidak boleh membuat pembina bukan kelas tertutup; pembina mereka privatesecara lalai.

Perbezaan Antara Kelas Enum dan Dimeteraikan

Kelas enum dan kelas tertutup agak serupa. Kumpulan nilai untuk jenis enum juga terhad seperti kelas tertutup.

Satu-satunya perbezaan adalah bahawa, enum dapat memiliki satu contoh, sedangkan subkelas kelas tertutup dapat memiliki beberapa contoh.

Artikel menarik...