Rumah  >  Artikel  >  Java  >  Cara menggunakan Kelas Termeterai untuk menyekat warisan kelas dalam Java 14

Cara menggunakan Kelas Termeterai untuk menyekat warisan kelas dalam Java 14

王林
王林asal
2023-07-29 19:42:22581semak imbas

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. abstractsealedabstract用于表示该类是一个抽象类,不能被实例化;sealed用于表示该类是一个Sealed Class,即限制了其子类的继承范围。

接下来,我们创建两个子类:LaptopDesktop,并使它们继承自ElectronicDevice

public final class Laptop extends ElectronicDevice {

    // Laptop类的代码...

}

public non-sealed class Desktop extends ElectronicDevice {

    // Desktop类的代码...

}

在子类的定义上,我们使用了关键字finalnon-sealedfinal表示该类是不可被继承的,non-sealed表示该类是ElectronicDevice的子类,但不是Sealed Class。这意味着,除了LaptopDesktop这两个类之外,其他类不能直接继承自ElectronicDevice

接下来,我们可以在ElectronicDevice类中定义一些方法和属性。对于Sealed Class来说,由于其受限的继承关系,可以更加自信地在代码中使用这些方法和属性,而不用担心其它不应该继承该类的子类可能会破坏类的不变性或引入不一致性。

另外,Sealed Class还提供了一种机制,在定义子类时明确允许哪些类可以成为该类的子类。例如,我们可以创建一个名为Smartphone的子类,并使其只允许IOSPhoneAndroidPhone两个类继承:

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类允许继承的类的范围。这就意味着,只有IOSPhoneAndroidPhone两个类可以继承自Smartphone,其他类不能。

通过Sealed Classes,我们可以更好地管理和限制类的继承关系,提高代码的可读性和可维护性。只需要在定义类时使用sealed关键字,以及在定义子类时使用permits

Seterusnya, kami mencipta dua subkelas: Kod Komputer riba dan Desktop dan menjadikannya warisan daripada Peranti Elektronik:

rrreee

Dalam subkelas Secara takrif, kami menggunakan kata kunci final 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!

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