ホームページ  >  記事  >  Java  >  Sealed Classes を使用して Java 14 でクラスの継承と実装を制限する方法

Sealed Classes を使用して Java 14 でクラスの継承と実装を制限する方法

WBOY
WBOYオリジナル
2023-07-30 23:08:051316ブラウズ

シールド クラスを使用して Java 14 でクラスの継承と実装を制限する方法

Java の継続的な開発により、新しいバージョンが継続的にリリースされ、コードの可読性と保守性を向上させるためのより強力な機能とツールが開発者に提供されます。 。 Java 14 では、クラスの継承と実装を制限するメカニズムである Sealed Classes の概念が導入されました。この記事では、Sealed Classesの使い方と実際の応用シナリオを詳しく紹介します。

  1. Sealed クラスとは何ですか?
    Sealed Classes は、クラスの継承と実装を制限するメカニズムです。クラスまたはインターフェイスの定義の前にキーワード sealed を追加すると、そのクラスまたはインターフェイスのサブクラスまたは実装クラスの範囲を定義できます。このスコープ内のサブクラスまたは実装クラスのみがクラスまたはインターフェイスを継承または実装できますが、スコープ外のクラスはそれを継承または実装できません。これにより、クラスの乱用や誤用を回避し、コードのセキュリティと安定性を向上させることができます。
  2. Sealed クラスの使用方法
    Sealed クラスを定義する前に、Sealed Interface または通常の抽象クラスを定義する必要があります。このシールド インターフェイスまたは抽象クラスは、スコープを制限する役割を果たし、どのクラスがクラスまたはインターフェイスを継承または実装できるかを定義します。次に、sealed キーワードを使用してクラスまたはインターフェイスを定義できます。コード例は次のとおりです:
public sealed class Animal permits Cat, Dog, Bird {
    // class body
}

public final class Cat extends Animal {
    // class body
}

public final class Dog extends Animal {
    // class body
}

public final class Bird extends Animal {
    // class body
}

public class InvalidClass extends Animal {
    // compile error: InvalidClass is not allowed to extend Animal
}

上記のコードでは、Sealed Class Animal が定義されています。また、permits キーワードにより、このクラスのサブクラスは Cat、Dog、Bird として定義されますが、クラス InvalidClass はスコープを超えており、Animal クラスを継承できません。

  1. Sealed クラスの特性と制限
  2. Sealed クラスは最終クラスになることができます。つまり、サブクラスの拡張は許可されません。
  3. Sealed クラスには抽象メソッドを含めることができますが、デフォルト実装のメソッドは許可されません。
  4. シールド クラスが非最終クラスとして定義されているが、サブクラスが指定されていない場合は、すべての直接サブクラスを同じソース ファイル内で宣言する必要があります。
  5. Sealed クラスのサブクラスは、親クラスと同じパッケージ内で定義する必要があります。
  6. Sealed クラスの間接サブクラスは最終クラスでなければなりません。
  7. Sealed Classes の実践的なアプリケーション シナリオ
    Sealed Classes には、実際の開発における多くのアプリケーション シナリオがあります。いくつかの例を次に示します:
  • ステート マシン モードでSealed Classes を使用すると、限定された状態のセットを定義し、状態の継承と実装を制限して、指定された状態のみが使用できるようにすることができます。

    public sealed class State permits Waiting, Running, Closed {
      // class body
    }
    
    public final class Waiting extends State {
      // class body
    }
    
    public final class Running extends State {
      // class body
    }
    
    public final class Closed extends State {
      // class body
    }
    
    public final class InvalidState extends State {
      // compile error: InvalidState is not allowed to extend State
    }
  • フレームワークとライブラリの開発では、シールド クラスを使用して特定のクラスの継承と実装を制限し、フレームワークのコア ロジックが変更されないようにすることができます。

    public sealed class CoreLibrary permits Util, Helper, Logger {
      // class body
    }
    
    public final class Util extends CoreLibrary {
      // class body
    }
    
    public final class Helper extends CoreLibrary {
      // class body
    }
    
    public final class Logger extends CoreLibrary {
      // class body
    }
    
    public final class InvalidLibrary extends CoreLibrary {
      // compile error: InvalidLibrary is not allowed to extend CoreLibrary
    }

上記の例からわかるように、Sealed Classes により、Java 開発者はクラスの継承と実装をより詳細に制御できるようになり、コードのセキュリティと安定性が向上します。クラスの乱用と誤用。ただし、Sealed クラスはすべてのシナリオに適しているわけではないため、実際のニーズに基づいて注意して使用する必要があることに注意してください。

概要:
この記事では、Java 14 でシールド クラスを使用してクラスの継承と実装を制限する方法を紹介します。 sealed キーワードを使用し、permits キーワードを定義することにより、クラスの範囲を制限し、クラスの乱用や誤用を回避できます。同時に、シールド クラスの特性と制限、実際の適用シナリオについても説明しました。実際の開発では、Sealed クラスを合理的に使用すると、コードのセキュリティと安定性が向上し、コードの理解と保守が容易になります。

以上がSealed Classes を使用して Java 14 でクラスの継承と実装を制限する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。