Java 14 でシールド クラスを使用してクラスの継承関係を制限する方法
Java 14 では、クラスの継承関係を制限するメカニズムを提供するシールド クラスの概念が導入されました。シールされたクラスを使用すると、どのクラスがこのクラスから継承できるか、どのクラスがこのクラスの直接のサブクラスになることができるかを明示的に指定できます。このようにして、クラスの継承関係をより適切に制御し、継承すべきではないクラスの継承による潜在的な問題を軽減できます。
この記事では、Java 14 でシールド クラスを使用する方法を紹介し、理解を助けるためにいくつかのコード例を示します。
まず、電子デバイスのクラス階層を構築していると仮定して、基本クラスを作成しましょう:
public abstract sealed class ElectronicDevice permits Laptop, Desktop { // 基类的代码... }
基本クラスの定義では、2 つのキーワードを使用します: abstract
と sealed
。 abstract
は、クラスが抽象クラスでインスタンス化できないことを示すために使用され、sealed
は、クラスがサブクラスの継承範囲を制限するシールド クラスであることを示すために使用されます。 。
次に、2 つのサブクラス Laptop
と Desktop
を作成し、ElectronicDevice
から継承させます。
public final class Laptop extends ElectronicDevice { // Laptop类的代码... } public non-sealed class Desktop extends ElectronicDevice { // Desktop类的代码... }
Inサブクラスの定義では、キーワード final
と non-sealed
を使用します。 final
はクラスが継承できないことを意味し、non-sealed
はクラスが ElectronicDevice
のサブクラスであるが、Sealed Class ではないことを意味します。これは、Laptop
と Desktop
の 2 つのクラスを除き、他のクラスは ElectronicDevice
から直接継承できないことを意味します。
次に、ElectronicDevice
クラスでいくつかのメソッドとプロパティを定義できます。 Sealed クラスの場合、継承関係が制限されているため、クラスを継承すべきではない他のサブクラスがクラスの不変性を破壊したり、不整合を引き起こしたりする可能性を心配することなく、コード内でこれらのメソッドとプロパティをより安心して使用できます。
さらに、Sealed Class は、サブクラスを定義するときに、どのクラスがこのクラスのサブクラスになることができるかを明確に許可するメカニズムも提供します。たとえば、Smartphone
という名前のサブクラスを作成し、IOSPhone
と AndroidPhone
の 2 つのクラスのみが継承できるようにすることができます。たとえば、
キーワードを使用して、Smartphone
クラスが継承できるクラスのスコープを明示的に指定します。これは、IOSPhone
と AndroidPhone
の 2 つのクラスのみが Smartphone
から継承できるが、他のクラスは継承できないことを意味します。 Sealed Classes を通じて、クラスの継承関係をより適切に管理および制限し、コードの可読性と保守性を向上させることができます。クラスの継承範囲を明確に定義し、予期せぬ継承関係を回避するには、クラスを定義するときに
キーワードを使用し、サブクラスを定義するときに permits
キーワードを使用するだけで済みます。潜在的な問題。 要約すると、Java 14 では、Sealed Classes は、より柔軟で正確なクラス継承関係管理メカニズムを提供します。 Sealed クラスを合理的に使用することで、クラスの継承関係をより適切に制御および保護できるため、コードの信頼性と保守性が向上します。
この記事が、シールド クラスを使用して Java 14 でクラスの継承関係を制限するのに役立つことを願っています。読んでくれてありがとう!
以上がJava 14 でシールド クラスを使用してクラスの継承を制限する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。