Heim > Java > javaLernprogramm > Hauptteil

So verwenden Sie versiegelte Klassen, um die Klassenvererbung in Java 14 einzuschränken

王林
Freigeben: 2023-07-29 19:42:22
Original
622 Leute haben es durchsucht

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 {

    // 基类的代码...

}
Nach dem Login kopieren

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

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

public final class Laptop extends ElectronicDevice {

    // Laptop类的代码...

}

public non-sealed class Desktop extends ElectronicDevice {

    // Desktop类的代码...

}
Nach dem Login kopieren

在子类的定义上,我们使用了关键字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类的代码...

}
Nach dem Login kopieren

在这个例子中,我们使用permits关键字来明确指定Smartphone类允许继承的类的范围。这就意味着,只有IOSPhoneAndroidPhone两个类可以继承自Smartphone,其他类不能。

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

Als nächstes erstellen wir zwei Unterklassen: Laptop und Desktop und lassen sie von ElectronicDevice erben:

rrreee

In der Unterklasse verwenden wir per Definition die Schlüsselwörter final 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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage