Heim > Java > javaLernprogramm > Erweitertes Klassendesign mit Java Sealed Classes

Erweitertes Klassendesign mit Java Sealed Classes

DDD
Freigeben: 2024-11-03 01:51:03
Original
452 Leute haben es durchsucht

Advanced Class Design using Java Sealed Classes

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
}
Nach dem Login kopieren
Nach dem Login kopieren

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
}
Nach dem Login kopieren
Nach dem Login kopieren

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
}
Nach dem Login kopieren
Nach dem Login kopieren

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
}
Nach dem Login kopieren
Nach dem Login kopieren

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

  1. Eine versiegelte Klasse muss die Unterklassen, die sie erweitern können, explizit zulassen.
  2. 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.
  3. Eine versiegelte Schnittstelle muss die Klassen, die sie implementieren können, explizit zulassen.
  4. 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!

Quelle:dev.to
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