Rumah  >  Artikel  >  Java  >  Peraturan kelas tertutup di Jawa

Peraturan kelas tertutup di Jawa

Patricia Arquette
Patricia Arquetteasal
2024-10-08 22:12:31822semak imbas

Sealed class rules in Java

Kelas tertutup ialah ciri baharu yang diperkenalkan dalam Java versi 15 dan ke atas, direka untuk memberikan lebih kawalan dan fleksibiliti ke atas warisan kelas dalam modul. Kelas yang dimeterai mengenakan kekangan tertentu pada subkelasnya, membenarkan struktur hierarki kelas yang terhad dan teratur.

Untuk bermula, kelas tertutup dan subkelasnya mestilah tergolong dalam modul yang sama, atau jika diisytiharkan dalam modul yang tidak dinamakan, pakej yang sama. Ini memastikan bahawa semua kelas dalam hierarki kelas tertutup boleh diakses dan diurus dalam persekitaran tertentu.

Selain itu, setiap subkelas yang dibenarkan mesti terus melanjutkan kelas yang dimeterai. Ini memastikan hierarki yang jelas dan ringkas, tanpa sebarang subkelas bercabang dengan cara yang tidak dijangka.

Seterusnya, setiap subkelas yang dibenarkan mesti memilih pengubah suai untuk menerangkan cara ia meneruskan pengedap yang dimulakan oleh superclassnya. Terdapat tiga pilihan untuk pengubah suai ini:

1) Akhir: Pengubah suai ini menjadikan subkelas tahap akhir dalam hierarki kelas, melarang sebarang lanjutan lanjut.

2) Dimeterai: Pengubah suai ini membenarkan subkelas dilanjutkan lagi, tetapi dalam cara yang terhad. Semua subkelas subkelas tertutup mesti dibenarkan secara eksplisit oleh superkelas tertutup.

3) Tidak dimeterai: Pengubah suai ini mengembalikan bahagian hierarki subkelas kepada keadaan terbuka, membenarkan subkelas yang tidak diketahui memanjangkannya.

Sebagai contoh, pertimbangkan kelas Bentuk yang diisytiharkan sebagai dimeterai, dengan dua subkelas yang dibenarkan - Bulatan dan Segiempat. Dalam kes ini, Bulatan boleh diisytiharkan sebagai muktamad, manakala Square boleh diisytiharkan sebagai tidak dimeterai, membenarkan subkelas yang tidak diketahui melanjutkannya.

Perlu ambil perhatian bahawa kelas hanya boleh mempunyai satu pengubah suai daripada muktamad, dimeterai dan tidak dimeterai. Kelas tidak mungkin dimeterai dan dimuktamadkan pada masa yang sama, kerana ia mempunyai tujuan yang bertentangan.

Selain itu, kelas abstrak juga boleh diisytiharkan sebagai dimeterai atau tidak dimeterai, dan mungkin mempunyai ahli abstrak. Kelas yang dimeterai mungkin membenarkan subkelas abstrak asalkan ia juga dimeterai atau tidak dimeterai.

Akhir sekali, kebolehcapaian subkelas yang dibenarkan tidak perlu sepadan dengan kelas yang dimeterai. Subkelas boleh menjadi kurang boleh diakses, selagi ia masih boleh diakses oleh kelas tertutup. Ini mungkin menyebabkan sesetengah pengguna tidak dapat menukar subkelas secara menyeluruh tanpa klausa lalai dalam keluaran masa hadapan apabila padanan corak disokong oleh suis.

Untuk lebih memahami konsep kelas tertutup, mari kita lihat beberapa contoh pengekodan.

Dalam coretan kod di bawah, mata wang kelas tertutup ditakrifkan.

sealed class Currency permits Dinar {
    //:sealed Check out the non-sealed class inheritance for legal recommendations
}

Untuk membolehkan subkelas undang-undang dicipta, kelas mesti diisytiharkan dalam modul yang sama dan terus melanjutkan kelas Mata Wang. Kelas tertutup tidak boleh menghalang subkelas yang dibenarkan daripada melanjutkan lagi dalam cara terhad atau terbuka untuk sambungan oleh subkelas yang tidak diketahui. Oleh itu Dinar mesti berada dalam modul yang sama.

Mengambil coretan kod lebih jauh, kelas Dinar tidak dimeterai memanjangkan Mata Wang kelas tertutup. Kelas tidak dimeterai membolehkan subkelas selanjutnya dibuat dan dilanjutkan.

public non-sealed class Dinar extends Currency {
    // This class can be extended by any unknown subclass
}

Sebagai alternatif, jika kita ingin mengehadkan subkelas yang boleh memanjangkan Dinar, kita boleh mengisytiharkan kelas itu sebagai dimeterai dan menentukan subkelas yang dibenarkan melalui klausa permit.

sealed class Dinar extends Currency permits JordanianDinar, KuwaitiDinar {
    // Only subclasses JordanianDinar and KuwaitiDinar are permitted 
}

Subkelas JordanianDinar dan KuwaitiDinar mesti diisytiharkan dalam modul yang sama seperti Dinar dan mesti terus memanjangkan Dinar kelas tertutup. Ia boleh sama ada dimeterai, tidak dimeterai atau muktamad, bergantung pada tahap sekatan yang diingini.

Menggunakan kelas tertutup, kami boleh mencipta hierarki kelas berkaitan dan mempunyai lebih kawalan ke atas subkelas yang boleh dibuat dan dilanjutkan, memberikan pengkapsulan dan modulariti yang lebih baik dalam kod kami. Ia juga membantu meningkatkan keselamatan jenis kerana pengkompil boleh memberi amaran kepada kami jika kami cuba mencipta subkelas haram.

Kesimpulannya, kelas tertutup menawarkan pendekatan yang lebih teratur dan tersusun kepada pewarisan kelas, membolehkan lebih kawalan dan fleksibiliti dalam modul. Dengan mengenakan sekatan pada subkelas dan menyediakan pilihan untuk lanjutan lanjut, kelas tertutup menyediakan hierarki kelas yang lebih disengajakan dan disengajakan.

Atas ialah kandungan terperinci Peraturan kelas tertutup di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn