はじめに
オブジェクト指向プログラミングでは、クラス設計は、堅牢で保守可能なコードを作成する上で重要な役割を果たします。 Java 15 のリリースでは、シールされたクラスと呼ばれる新機能が導入され、クラス設計に制御とセキュリティの追加レイヤーが追加されました。シールされたクラスを使用すると、開発者はクラス階層を制限し、外部クラスがクラス階層を拡張したり実装したりするのを防ぐことができます。この記事では、シールド クラスの概念、その利点、Java での実装方法について説明します。
シールされたクラスとは何ですか?
シールされたクラスは、Java 15 で導入された新しいタイプのクラスで、サブクラスの継承と実装を制限します。これは、特定のクラスのみが拡張または実装できるようにする、密閉されたコンテナーと考えることができます。クラスがシール済みとして宣言されると、そのクラスはデフォルトで Final となり、外部クラスによってそのクラスを拡張または実装しようとすると、コンパイル エラーが発生します。
シールされたクラスを使用する利点
1.セキュリティの強化: シールされたクラスは、サブクラスの継承と実装を制限することにより、追加のセキュリティ層を提供します。これにより、コア クラスの不正な変更が防止され、信頼できるサブクラスのみがシールされたクラスにアクセスして変更できるようになります。
2.クラス階層の制御の向上: シールされたクラスを使用すると、開発者はクラス階層をより適切に制御できます。許可されるサブクラスを明示的に定義することで、関連性があり適切に設計されたクラスのみがシールされたクラスを拡張または実装できるようになり、コードベースの保守性が向上します。
3.コードの柔軟性の向上: シールされたクラスを拡張または実装できるサブクラスを制限することで、外部コードの破損を心配することなく、必要な変更やリファクタリングを行うことができます。これにより、シールされたクラスを操作する際に柔軟性がもたらされ、コードベースの安定性と保守性が確保されます。
Sealed クラスの実装
クラスをシール済みとして宣言するには、以下に示すようにクラス宣言で 'sealed' キーワードを使用します。
//Sealed class declaration public sealed class Triangle permits EquilateralTriangle, RightAngleTriangle { //Class body }
ここでは、「permits」キーワードを使用して、シールされたクラスの拡張が許可されるサブクラスを指定します。上の例では、クラス「EquiliteralTriangle」と「RightAngleTriangle」のみが「Triangle」クラスを拡張できます。
次に、「Triangle」クラスを拡張できるサブクラスを作成しましょう。
//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 }
「Equi LateralTriangle」クラスは、継承階層の最後のサブクラスであるため「final」として宣言されており、「RightAngleTriangle」クラスは、さらなるサブクラスによる拡張が可能であるため「non-sealed」として宣言されていることに注意してください。
次に、シールされたインターフェイスの実装例を見てみましょう。インターフェースは、シールされたクラスと同じ構文を使用してシールされたものとして宣言できます。
//Sealed class declaration public sealed class Triangle permits EquilateralTriangle, RightAngleTriangle { //Class body }
ここでは、「permits」キーワードを使用して、シールされたインターフェイスの実装を許可されるクラスを指定します。上記の例では、クラス「Rectangle」と「Circle」のみが「Shape」インターフェイスを実装できます。
//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 }
「Rectangle」クラスは、「Shape」インターフェースを実装する最後のクラスであるため「final」として宣言されており、「Circle」クラスは、その後のクラスで次のことを可能にするため「non-sealed」として宣言されていることに注意してください。それを実装してください。
シールされたクラスとインターフェースの継承ルール
結論
Sealed クラスは Java への強力な追加機能であり、クラス設計を大幅に強化し、コードベースをより安全で保守しやすくします。クラスとインターフェイスの階層を制限することにより、シールされたクラスは、クラスの設計時に追加の制御層と柔軟性を提供します。この新機能を使用すると、開発者は信頼できるサブクラスまたは実装クラスのみがシールされたクラスにアクセスして変更できるようにすることができ、より安定した堅牢なコードベースが実現します。最新の Java 認定資格を取得して Java スキルを向上させます。
以上がJava Sealed クラスを使用した高度なクラス設計の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。