Cara menggunakan Kelas Termeterai untuk menyekat hubungan warisan kelas dalam Java 14
Di Java 14, konsep Kelas Termeterai telah diperkenalkan, yang menyediakan mekanisme untuk menyekat hubungan warisan kelas. Kelas Termeterai membolehkan kami menentukan secara eksplisit kelas mana yang boleh diwarisi daripada kelas ini dan kelas mana yang dibenarkan untuk menjadi subkelas langsung kelas ini. Dengan cara ini, kita boleh mengawal hubungan pewarisan kelas dengan lebih baik dan mengurangkan potensi masalah untuk mewarisi kelas yang tidak sepatutnya diwarisi.
Dalam artikel ini, kami akan memperkenalkan cara menggunakan Kelas Termeterai dalam Java 14 dan memberikan beberapa contoh kod untuk membantu pemahaman.
Mula-mula, mari kita cipta kelas asas, dengan andaian kita sedang membina hierarki kelas untuk peranti elektronik:
public abstract sealed class ElectronicDevice permits Laptop, Desktop { // 基类的代码... }
Dalam takrif kelas asas, kita menggunakan dua kata kunci: abstrak
dan dimeterai
. abstract
digunakan untuk menunjukkan bahawa kelas adalah kelas abstrak dan tidak boleh digunakan untuk menunjukkan bahawa kelas itu ialah Kelas Termeterai, yang mengehadkan skop warisan; subkelasnya. abstract
和sealed
。abstract
用于表示该类是一个抽象类,不能被实例化;sealed
用于表示该类是一个Sealed Class,即限制了其子类的继承范围。
接下来,我们创建两个子类:Laptop
和Desktop
,并使它们继承自ElectronicDevice
:
public final class Laptop extends ElectronicDevice { // Laptop类的代码... } public non-sealed class Desktop extends ElectronicDevice { // Desktop类的代码... }
在子类的定义上,我们使用了关键字final
和non-sealed
。final
表示该类是不可被继承的,non-sealed
表示该类是ElectronicDevice
的子类,但不是Sealed Class。这意味着,除了Laptop
和Desktop
这两个类之外,其他类不能直接继承自ElectronicDevice
。
接下来,我们可以在ElectronicDevice
类中定义一些方法和属性。对于Sealed Class来说,由于其受限的继承关系,可以更加自信地在代码中使用这些方法和属性,而不用担心其它不应该继承该类的子类可能会破坏类的不变性或引入不一致性。
另外,Sealed Class还提供了一种机制,在定义子类时明确允许哪些类可以成为该类的子类。例如,我们可以创建一个名为Smartphone
的子类,并使其只允许IOSPhone
和AndroidPhone
两个类继承:
public sealed class Smartphone extends ElectronicDevice permits IOSPhone, AndroidPhone { // Smartphone类的代码... } public final class IOSPhone extends Smartphone { // IOSPhone类的代码... } public final class AndroidPhone extends Smartphone { // AndroidPhone类的代码... }
在这个例子中,我们使用permits
关键字来明确指定Smartphone
类允许继承的类的范围。这就意味着,只有IOSPhone
和AndroidPhone
两个类可以继承自Smartphone
,其他类不能。
通过Sealed Classes,我们可以更好地管理和限制类的继承关系,提高代码的可读性和可维护性。只需要在定义类时使用sealed
关键字,以及在定义子类时使用permits
rrreee
Dalam subkelas Secara takrif, kami menggunakan kata kuncifinal
dan non-sealed
. final
bermaksud kelas tidak boleh diwarisi dan non-sealed
bermaksud kelas tersebut ialah subkelas ElectronicDevice
, tetapi bukan Kelas Termeterai. Ini bermakna, kecuali untuk dua kelas Riba Riba
dan Desktop
, kelas lain tidak boleh mewarisi terus daripada ElectronicDevice
. Seterusnya, kita boleh menentukan beberapa kaedah dan sifat dalam kelas ElectronicDevice
. Untuk Kelas Termeterai, disebabkan perhubungan warisannya yang terhad, anda boleh menggunakan kaedah dan sifat ini dalam kod anda dengan lebih yakin tanpa bimbang bahawa subkelas lain yang tidak sepatutnya mewarisi kelas boleh memusnahkan invarian kelas atau memperkenalkan ketidakkonsistenan. 🎜🎜Selain itu, Kelas Termeterai juga menyediakan mekanisme untuk membenarkan secara eksplisit kelas mana yang boleh menjadi subkelas kelas ini apabila mentakrifkan subkelas. Sebagai contoh, kita boleh mencipta subkelas bernama Smartphone
dan membenarkan hanya dua kelas, IOSPhone
dan AndroidPhone
, untuk mewarisi: 🎜rrreee🎜 Dalam contoh ini , kami menggunakan kata kunci permit
untuk menyatakan secara eksplisit skop kelas yang kelas Smartphone
dibenarkan untuk diwarisi. Ini bermakna hanya dua kelas, IOSPhone
dan AndroidPhone
, boleh mewarisi daripada Smartphone
, tetapi kelas lain tidak boleh. 🎜🎜Melalui Kelas Termeterai, kami boleh mengurus dan menyekat perhubungan warisan kelas dengan lebih baik dan meningkatkan kebolehbacaan dan kebolehselenggaraan kod. Anda hanya perlu menggunakan kata kunci sealed
apabila mentakrifkan kelas dan kata kunci permit
semasa mentakrifkan subkelas untuk mentakrifkan dengan jelas skop warisan kelas dan mengelakkan perhubungan warisan yang tidak dijangka kepada masalah yang berpotensi. 🎜🎜Ringkasnya, dalam Java 14, Kelas Termeterai menyediakan mekanisme pengurusan perhubungan warisan kelas yang lebih fleksibel dan tepat. Melalui penggunaan Kelas Termeterai yang munasabah, kami boleh mengawal dan melindungi perhubungan warisan kelas dengan lebih baik, dengan itu meningkatkan kebolehpercayaan dan kebolehselenggaraan kod. 🎜🎜Saya harap artikel ini akan membantu anda menggunakan Kelas Termeterai untuk menyekat perhubungan warisan kelas dalam Java 14. Terima kasih kerana membaca! 🎜Atas ialah kandungan terperinci Cara menggunakan Kelas Termeterai untuk menyekat warisan kelas dalam Java 14. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!