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
- Eine versiegelte Klasse muss die Unterklassen, die sie erweitern können, explizit zulassen.
- Alle zulässigen Unterklassen müssen direkte Unterklassen der versiegelten Klasse sein. Dies bedeutet, dass wir eine nicht zulässige Unterklasse nicht erweitern können, um eine indirekte Unterklasse der versiegelten Klasse zu erstellen.
- Eine versiegelte Schnittstelle muss die Klassen, die sie implementieren können, explizit zulassen.
- Alle zulässigen Klassen müssen alle Schnittstellenmethoden implementieren. Das bedeutet, dass wir keine Klasse erstellen können, die die versiegelte Schnittstelle teilweise implementiert.
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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

MinGW – Minimalistisches GNU für Windows
Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

DVWA
Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

SecLists
SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor