Q64: What are Sealed Classes and Interfaces (Java 17+)?

Sealed Classes (sealed) restrict which subclasses are permitted to extend or implement them using the permits clause.

  • Subclass Rules: Permitted subclasses MUST explicitly declare one of three modifiers:
    1. final: Cannot be extended further.
    2. sealed: Can be extended by a restricted list of subclasses.
    3. non-sealed: Opens hierarchy to unrestricted inheritance.
Sealed Class Hierarchy
public sealed class Shape permits Circle, Square {}

public final class Circle extends Shape {} // Final
public non-sealed class Square extends Shape {} // Opened hierarchy
💡 Shape limits direct inheritance strictly to Circle and Square.
Key Takeaways
  • Restricts inheritance hierarchies using permits.
  • Subclasses must be final, sealed, or non-sealed.
Knowledge Check

Which keyword modifier must be declared on a permitted subclass to reopen it for unrestricted inheritance?