The Complete Responsive CMS Blog created by Francesco Malagrino

Exploring the Sealed Classes

Category: Java & Written by Francesco Malagrino On June-06-2023 21:07:07


With the release of Java 19, developers have been introduced to a variety of exciting new features and enhancements. One of the notable additions is the concept of sealed classes. Sealed classes provide a powerful mechanism for controlling inheritance and ensuring strict encapsulation within Java applications. In this blog post, we will delve into the world of sealed classes, exploring their benefits, usage, and implications for Java developers.

Understanding Sealed Classes:

In object-oriented programming, inheritance plays a crucial role in code reuse and structuring classes. However, it can also introduce challenges when it comes to maintaining the integrity and encapsulation of a class hierarchy. Sealed classes aim to address these challenges by allowing developers to exert fine-grained control over class inheritance.

Sealed classes can be thought of as a restricted form of inheritance, where the class author explicitly defines which other classes can extend or implement them. By explicitly declaring the permitted subclasses or implementing classes, sealed classes prevent arbitrary extensions and maintain a well-defined hierarchy.

Syntax and Usage:

To declare a class as sealed in Java 19, the 'sealed' keyword is used in conjunction with the 'class' keyword. Here's an example:

public sealed class Vehicle permits Car, Bike, Truck {
// Class definition

In the above example, the Vehicle class is declared as sealed. The permits keyword is used to specify the permitted subclasses Car, Bike, and Truck. Only these classes are allowed to extend Vehicle, ensuring that the class hierarchy is tightly controlled.

If another class attempts to extend Vehicle without being specified in the permits clause, a compilation error will occur, enforcing the contract defined by the sealed class.

Benefits of Sealed Classes:

Enhanced maintainability: Sealed classes promote maintainability by explicitly stating the allowed subclasses, reducing the risk of unintended extensions or modifications.

Strong encapsulation: By controlling inheritance, sealed classes enforce encapsulation and protect the internal implementation details of the class hierarchy.

Improved readability and understanding: With sealed classes, it becomes easier for developers to understand the intended structure of class hierarchies, making code comprehension and debugging more straightforward.

Considerations and Limitations:

While sealed classes provide valuable benefits, it's important to consider their implications carefully. Here are a few key points to keep in mind:

The 'permits' clause must include all permitted subclasses. Omitting any subclass will result in a compilation error.

Once a class is declared as sealed, it cannot be extended by classes outside of the permitted subclasses unless the sealed declaration is modified.

Sealed classes can be abstract or final, allowing for a range of customization options within the hierarchy.

Modifying the sealed declaration or adding/removing permitted subclasses requires recompiling all classes in the hierarchy to maintain consistency.


Sealed classes introduce a valuable mechanism for controlling inheritance and ensuring the integrity of class hierarchies in Java 19. By explicitly specifying permitted subclasses, developers can enforce encapsulation, enhance code maintainability, and improve code comprehension.

As you explore the possibilities of Java 19, don't forget to leverage the power of sealed classes in your applications. With their careful control over class inheritance, sealed classes empower developers to design more robust and maintainable codebases.

So why not embrace sealed classes and take advantage? Happy coding!



Share your thoughts about this post
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.