Bayangkan anda seorang raja dengan titah diraja. Anda ingin mengisytiharkan bahawa hanya individu tertentu boleh mewarisi takhta, dan tidak ada orang lain. Dalam dunia pengaturcaraan, itu seperti kelas tertutup! Ia mengehadkan hierarki, memastikan bahawa hanya satu set subkelas tertentu boleh wujud. ?
Java mempunyai enum, iaitu jenis kelas khas yang mewakili set tetap pemalar. Mereka seperti mahkamah diraja, dengan setiap ahli mempunyai peranan tertentu dan tiada kemungkinan menambah ahli baharu.
// Java public enum RoyalTitle { KING, QUEEN, PRINCE, PRINCESS }
Enum bagus untuk mewakili set pilihan yang terhad, tetapi mereka tidak mempunyai fleksibiliti kelas. Anda tidak boleh menambah ahli baharu atau melanjutkan mereka dengan gelagat tambahan. Ia seperti mempunyai struktur mahkamah yang tegar tanpa ruang untuk gelaran atau peranan baharu. ?
Kotlin memperkenalkan kelas tertutup, yang membolehkan anda mentakrifkan hierarki subkelas terhad. Hanya subkelas yang ditakrifkan dalam fail yang sama dengan kelas tertutup boleh mewarisi daripadanya. Ia seperti raja mengisytiharkan individu tertentu yang layak untuk takhta.
// Kotlin sealed class RoyalTitle { object King : RoyalTitle() object Queen : RoyalTitle() data class Prince(val name: String) : RoyalTitle() data class Princess(val name: String) : RoyalTitle() }
Kelas tertutup menawarkan beberapa kelebihan:
Java, yang mengiktiraf had enum, memperkenalkan antara muka tertutup dalam Java 17. Ini membolehkan anda mentakrifkan antara muka dengan set terhad subkelas yang dibenarkan, serupa dengan kelas tertutup Kotlin.
// Java public sealed interface RoyalTitle permits King, Queen, Prince, Princess {}
Ini memberikan lebih fleksibiliti daripada enum sambil mengekalkan kawalan ke atas hierarki warisan. Walau bagaimanapun, ia masih merupakan ciri yang agak baharu dalam Java, dan kelas tertutup Kotlin menawarkan sintaks dan penyepaduan yang lebih ringkas dengan ungkapan bila.
Kelas tertutup Kotlin menyediakan cara yang berkesan untuk menentukan hierarki kelas terhad, menawarkan lebih banyak fleksibiliti dan keselamatan jenis daripada enum Java. Dengan penambahan antara muka tertutup, Java mengejar, tetapi kelas tertutup Kotlin kekal sebagai penyelesaian yang lebih matang dan ekspresif. Jadi, jika anda bersedia untuk memerintah kod anda dengan dekri diraja, terima kuasa kelas tertutup! ?
P.S. Jika anda seorang pembangun Java yang masih bergantung pada enum, jangan risau. Anda sentiasa boleh meneroka antara muka tertutup untuk lebih fleksibiliti. Ia mungkin tidak sehebat kelas Kotlin yang dimeterai, tetapi ia adalah satu langkah ke arah kerajaan warisan yang lebih terkawal! ?
Atas ialah kandungan terperinci Kelas Termeterai Kotlin lwn. Java Enums (dan Antara Muka Termeterai!): Kisah Hierarki Terhad. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!