Java
Sealed class
Learn restricted inheritance with sealed classes.
What is a sealed class?
A sealed class explicitly lists which classes may inherit from it. It is defined with the sealed keyword; allowed subclasses are specified with permits. It became standard in Java 17.
Example: sealed class Shape permits Circle, Square { }. Here Shape allows only Circle and Square to inherit. Another class cannot write extends Shape; it gets a compile error. This keeps the hierarchy predictable. Subclasses must be final, sealed or non-sealed. Sealed is the official way to close the inheritance tree. It is powerful together with pattern matching.
The advantage of sealed
Sealed classes make code predictable by restricting the inheritance hierarchy. Because the compiler knows all subclasses, it can do exhaustiveness checks in features like pattern matching.
Example: if you define sealed class Shape permits Circle, Square, then in a switch covering the Circle and Square cases the compiler verifies all options are handled. This catches missing cases early. Without sealed, who extends Shape cannot be known; the check is impossible. Sealed also helps library designers protect the hierarchy. The subclass list stays stable across versions.
Exercise Define the sealed Shape class
Define sealed class Shape permits Circle, Square { }. Then write final class Circle extends Shape { } and final class Square extends Shape { }. In main define a Shape array: Shape[] shapes = { new Circle(), new Square() };. Loop with for and print each one's class name with System.out.println(s.getClass().getSimpleName());.
Show example solution
sealed class Shape permits Circle, Square {
}
final class Circle extends Shape {
}
final class Square extends Shape {
}
class Main {
public static void main(String[] args) {
Shape[] shapes = { new Circle(), new Square() };
for (Shape s : shapes) {
System.out.println(s.getClass().getSimpleName());
}
}
}
Test yourself
-
Which keyword lists subclasses in a sealed class?
- extends
- implements
- permits
- with
Show answer
permits — The permits keyword lists subclasses.
-
Match the sealed class concepts
- sealed
- Restricted inheritance keyword
- permits
- Permission list keyword
- final
- Closed subclass
- non-sealed
- Open subclass
-
Complete the permits line
sealed class Shape ____ Circle, Square { }
final class Circle extends Shape { }
final class Square extends Shape { }
Show answer
sealed class Shape permits Circle, Square { }
final class Circle extends Shape { }
final class Square extends Shape { }
Next lesson: Summary - Abstract class