So verwenden Sie versiegelte Klassen, um Klassenvererbungsbeziehungen in Java 14 einzuschränken
In Java 14 wurde das Konzept versiegelter Klassen eingeführt, das einen Mechanismus zur Einschränkung von Klassenvererbungsbeziehungen bereitstellt. Mit versiegelten Klassen können wir explizit angeben, welche Klassen von dieser Klasse erben können und welche Klassen direkte Unterklassen dieser Klasse werden dürfen. Auf diese Weise können wir die Vererbungsbeziehung von Klassen besser steuern und die potenziellen Probleme beim Erben einer Klasse reduzieren, die nicht vererbt werden sollte.
In diesem Artikel stellen wir die Verwendung versiegelter Klassen in Java 14 vor und stellen einige Codebeispiele zum besseren Verständnis bereit.
Lassen Sie uns zunächst eine Basisklasse erstellen, vorausgesetzt, wir erstellen eine Klassenhierarchie für ein elektronisches Gerät:
public abstract sealed class ElectronicDevice permits Laptop, Desktop { // 基类的代码... }
In der Definition der Basisklasse verwenden wir zwei Schlüsselwörter: abstract
und versiegelt
. abstract
wird verwendet, um anzugeben, dass die Klasse eine abstrakte Klasse ist und nicht instanziiert werden kann; sealed
wird verwendet, um anzugeben, dass die Klasse eine versiegelte Klasse ist, was den Vererbungsbereich von einschränkt seine Unterklassen. 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
Laptop
und Desktop
und lassen sie von ElectronicDevice
erben: rrreee
In der Unterklasse verwenden wir per Definition die Schlüsselwörterfinal
und non-sealed
. final
bedeutet, dass die Klasse nicht vererbt werden kann, und non-sealed
bedeutet, dass die Klasse eine Unterklasse von ElectronicDevice
, aber keine versiegelte Klasse ist. Dies bedeutet, dass außer den beiden Klassen Laptop
und Desktop
andere Klassen nicht direkt von ElectronicDevice
erben können. Als nächstes können wir einige Methoden und Eigenschaften in der Klasse ElectronicDevice
definieren. Aufgrund der eingeschränkten Vererbungsbeziehung können Sie diese Methoden und Eigenschaften in Ihrem Code sicherer verwenden, ohne befürchten zu müssen, dass andere Unterklassen, die die Klasse nicht erben sollten, die Invarianz der Klasse zerstören oder Inkonsistenzen verursachen könnten. 🎜🎜Darüber hinaus bietet Sealed Class auch einen Mechanismus, um beim Definieren einer Unterklasse explizit zuzulassen, welche Klassen Unterklassen dieser Klasse werden können. Beispielsweise können wir eine Unterklasse mit dem Namen Smartphone
erstellen und nur zwei Klassen, IOSPhone
und AndroidPhone
, die Vererbung zulassen: 🎜rrreee🎜 In diesem Beispiel verwenden wir das Schlüsselwort permits
, um explizit den Umfang der Klassen anzugeben, von denen die Klasse Smartphone
erben darf. Dies bedeutet, dass nur zwei Klassen, IOSPhone
und AndroidPhone
, von Smartphone
erben können, andere Klassen jedoch nicht. 🎜🎜Durch versiegelte Klassen können wir die Vererbungsbeziehung von Klassen besser verwalten und einschränken und die Lesbarkeit und Wartbarkeit des Codes verbessern. Sie müssen beim Definieren einer Klasse nur das Schlüsselwort sealed
und beim Definieren einer Unterklasse das Schlüsselwort permits
verwenden, um den Vererbungsbereich der Klasse klar zu definieren und unerwartete Vererbungsbeziehungen zu vermeiden auf mögliche Probleme. 🎜🎜Zusammenfassend lässt sich sagen, dass Sealed Classes in Java 14 einen flexibleren und präziseren Mechanismus zur Verwaltung von Klassenvererbungsbeziehungen bietet. Durch die sinnvolle Verwendung versiegelter Klassen können wir die Vererbungsbeziehung von Klassen besser kontrollieren und schützen und dadurch die Zuverlässigkeit und Wartbarkeit des Codes verbessern. 🎜🎜Ich hoffe, dieser Artikel hilft Ihnen dabei, versiegelte Klassen zu verwenden, um Klassenvererbungsbeziehungen in Java 14 einzuschränken. Danke fürs Lesen! 🎜Das obige ist der detaillierte Inhalt vonSo verwenden Sie versiegelte Klassen, um die Klassenvererbung in Java 14 einzuschränken. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!