Einführung
Bei der objektorientierten Programmierung spielt das Klassendesign eine entscheidende Rolle bei der Erstellung robusten und wartbaren Codes. Mit der Veröffentlichung von Java 15 wurde eine neue Funktion namens versiegelte Klassen eingeführt, die dem Klassendesign eine zusätzliche Ebene der Kontrolle und Sicherheit hinzufügt. Mit versiegelten Klassen können Entwickler Klassenhierarchien einschränken und so verhindern, dass externe Klassen sie erweitern oder implementieren. In diesem Artikel besprechen wir das Konzept versiegelter Klassen, ihre Vorteile und wie sie in Java implementiert werden können.
Was sind versiegelte Kurse?
Eine versiegelte Klasse ist ein neuer Klassentyp, der in Java 15 eingeführt wurde und die Vererbung und Implementierung seiner Unterklassen einschränkt. Es kann als versiegelter Container betrachtet werden, der nur bestimmten Klassen die Erweiterung oder Implementierung ermöglicht. Sobald eine Klasse als versiegelt deklariert ist, wird sie standardmäßig endgültig und jeder Versuch, sie durch externe Klassen zu erweitern oder zu implementieren, führt zu einem Kompilierungsfehler.
Vorteile der Verwendung versiegelter Klassen
1. Erhöhte Sicherheit: Versiegelte Klassen bieten eine zusätzliche Sicherheitsebene, indem sie die Vererbung und Implementierung ihrer Unterklassen einschränken. Dies verhindert die unbefugte Änderung von Kernklassen und stellt sicher, dass nur vertrauenswürdige Unterklassen auf die versiegelte Klasse zugreifen und diese ändern können.
2. Bessere Kontrolle über Klassenhierarchien: Mit versiegelten Klassen haben Entwickler eine bessere Kontrolle über die Klassenhierarchien. Durch die explizite Definition der zulässigen Unterklassen können wir sicherstellen, dass nur relevante und ordnungsgemäß gestaltete Klassen die versiegelte Klasse erweitern oder implementieren, was zu einer besser wartbaren Codebasis führt.
3. Verbesserte Codeflexibilität: Durch die Beschränkung der Unterklassen, die eine versiegelte Klasse erweitern oder implementieren können, können wir notwendige Änderungen oder Umgestaltungen vornehmen, ohne uns Sorgen machen zu müssen, dass externer Code beschädigt wird. Dies sorgt für ein Gefühl der Flexibilität bei der Arbeit mit versiegelten Klassen und stellt sicher, dass die Codebasis stabil und wartbar bleibt.
Implementierung versiegelter Klassen
Um eine Klasse als versiegelt zu deklarieren, können wir das Schlüsselwort „sealed“ in der Klassendeklaration verwenden, wie unten gezeigt:
//Sealed class declaration public sealed class Triangle permits EquilateralTriangle, RightAngleTriangle { //Class body }
Hier wird das Schlüsselwort „permits“ verwendet, um die Unterklassen anzugeben, die die versiegelte Klasse erweitern dürfen. Im obigen Beispiel können nur die Klassen „EquilateralTriangle“ und „RightAngleTriangle“ die Klasse „Triangle“ erweitern.
Jetzt erstellen wir die Unterklassen, die die Klasse „Triangle“ erweitern können.
//Example of Subclass that Extends Sealed Class public final class EquilateralTriangle extends Triangle { //Class body } //Example of Subclass that Extends Sealed Class public non-sealed class RightAngleTriangle extends Triangle { //Class body }
Beachten Sie, dass die Klasse „EquilateralTriangle“ als „final“ deklariert ist, da sie die letzte Unterklasse in der Vererbungshierarchie ist, und die Klasse „RightAngleTriangle“ als „nicht versiegelt“ deklariert ist, da sie die Erweiterung durch weitere Unterklassen ermöglicht.
Als nächstes sehen wir uns ein Beispiel für die Implementierung versiegelter Schnittstellen an. Eine Schnittstelle kann mit derselben Syntax wie versiegelte Klassen als versiegelt deklariert werden.
//Sealed class declaration public sealed class Triangle permits EquilateralTriangle, RightAngleTriangle { //Class body }
Hier wird das Schlüsselwort „permits“ verwendet, um die Klassen anzugeben, die die versiegelte Schnittstelle implementieren dürfen. Im obigen Beispiel können nur die Klassen „Rectangle“ und „Circle“ die Schnittstelle „Shape“ implementieren.
//Example of Subclass that Extends Sealed Class public final class EquilateralTriangle extends Triangle { //Class body } //Example of Subclass that Extends Sealed Class public non-sealed class RightAngleTriangle extends Triangle { //Class body }
Beachten Sie, dass die Klasse „Rectangle“ als „final“ deklariert ist, da sie die letzte Klasse ist, die die Schnittstelle „Shape“ implementiert, und die Klasse „Circle“ als „nicht versiegelt“ deklariert ist, da sie dies für weitere Klassen zulässt umsetzen.
Vererbungsregeln für versiegelte Klassen und Schnittstellen
Fazit
Versiegelte Klassen sind eine leistungsstarke Ergänzung zu Java, die das Klassendesign erheblich verbessern und die Codebasis sicherer und wartbarer machen kann. Durch die Einschränkung der Hierarchie von Klassen und Schnittstellen bieten versiegelte Klassen eine zusätzliche Ebene der Kontrolle und Flexibilität beim Entwerfen von Klassen. Mit dieser neuen Funktion können Entwickler sicherstellen, dass nur vertrauenswürdige Unterklassen oder implementierende Klassen auf die versiegelte Klasse zugreifen und diese ändern können, was zu einer stabileren und robusteren Codebasis führt. Erweitern Sie Ihre Java-Kenntnisse, indem Sie die neuesten Java-Zertifizierungen erwerben.
Das obige ist der detaillierte Inhalt vonErweitertes Klassendesign mit Java Sealed Classes. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!