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:
final: Cannot be extended further.sealed: Can be extended by a restricted list of subclasses.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, ornon-sealed.
Knowledge Check
Which keyword modifier must be declared on a permitted subclass to reopen it for unrestricted inheritance?