174. Introducing JDK 17 sealed classes
Among the cool features of JDK 17, we have JEP 409 (sealed classes). This JEP provides an explicit, intuitive, crystal-clear solution for nominating who will extend a class/interface or will implement an interface. In other words, sealed classes can control inheritance at a finer level. Sealed classes can affect classes, abstract
classes, and interfaces and sustain the readability of the code – you have an easy and expressive solution to tell your colleagues who can extend/implement your code.
Figure 8.3: JDK 17, JEP 409
Via sealed classes, we have finer control over a hierarchy of classes. As you can see from the previous figure, sealed classes are the missing piece of the puzzle sitting between final
and package-private. In other words, sealed classes provide a granularity that we cannot obtain via the final
modifier and package-private access.
Important note
Sealed classes don’t affect the semantics...