Java Sealed Classes Interview Questions and Answers
Master Java Sealed Classes with production-ready interview questions covering sealed, permits, non-sealed, final classes, inheritance control, pattern matching, domain modeling, best practices, and enterprise use cases.
Java Sealed Classes Interview Questions & Answers
Introduction
One of the biggest additions in Java 17 is Sealed Classes, a feature that gives developers fine-grained control over inheritance.
Before Java 17, any public class could typically be extended by any other class. This often led to:
- Uncontrolled inheritance
- Difficult maintenance
- Broken business rules
- Large inheritance hierarchies
- Security concerns
Java 17 introduced Sealed Classes to solve these problems by allowing developers to explicitly define which classes can extend or implement a type.
Sealed Classes are especially useful in:
- Banking Systems
- Insurance Platforms
- Payment Applications
- Domain-Driven Design (DDD)
- Enterprise Frameworks
- State Machines
- Rule Engines
This guide covers the most frequently asked Sealed Classes interview questions with production-ready explanations.
1. What are Sealed Classes?
Answer
A Sealed Class restricts which classes are allowed to extend it.
Example
public sealed class Vehicle
permits Car, Bike {
}
Only the permitted classes can inherit from Vehicle.
Benefits
- Controlled inheritance
- Better domain modeling
- Improved maintainability
- Better API design
2. Why were Sealed Classes introduced?
Answer
Before Java 17
public class Vehicle {
}
Any class could extend it.
class Truck extends Vehicle {
}
class Bus extends Vehicle {
}
Developers had no control over inheritance.
With Sealed Classes
public sealed class Vehicle
permits Car, Bike {
}
Only the specified subclasses are allowed.
This improves software design and protects business rules.
3. What is the syntax of a Sealed Class?
Answer
Example
public sealed class Shape
permits Circle,
Rectangle {
}
Permitted subclasses
final class Circle
extends Shape {
}
final class Rectangle
extends Shape {
}
The compiler enforces the permitted hierarchy.
4. What is the permits clause?
Answer
The permits clause explicitly lists all subclasses that may extend the sealed class.
Example
sealed class Payment
permits CreditCard,
UPI,
Wallet {
}
Only these three classes can extend Payment.
Attempting to create another subclass results in a compilation error.
5. What are the allowed modifiers for permitted subclasses?
Answer
Every permitted subclass must declare one of the following modifiers:
final
No further inheritance.
final class Car
extends Vehicle {
}
sealed
Restricts inheritance again.
sealed class Car
extends Vehicle
permits ElectricCar {
}
non-sealed
Removes the restriction.
non-sealed class Bike
extends Vehicle {
}
These modifiers clearly define inheritance behavior.
6. What is a non-sealed class?
Answer
A non-sealed class removes inheritance restrictions imposed by its sealed parent.
Example
sealed class Animal
permits Dog {
}
non-sealed class Dog
extends Animal {
}
Now any class can extend Dog.
Example
class Labrador
extends Dog {
}
Use non-sealed only when further extension is intentionally allowed.
7. What is the difference between sealed, final, and non-sealed?
Answer
sealed
Restricts inheritance.
final
Completely prevents inheritance.
non-sealed
Allows unrestricted inheritance.
Comparison
| Modifier | Inheritance |
|---|---|
| sealed | Restricted |
| final | Not Allowed |
| non-sealed | Fully Allowed |
Choosing the correct modifier depends on the domain model.
8. What are the advantages of Sealed Classes?
Answer
Advantages include:
- Controlled inheritance
- Better API design
- Better security
- Easier maintenance
- Better compiler validation
- Improved readability
- Better Pattern Matching support
- Stronger domain modeling
These benefits are especially valuable in large enterprise applications.
9. How do Sealed Classes work with Pattern Matching?
Answer
Sealed Classes work well with Pattern Matching because the compiler knows all possible subclasses.
Example
sealed interface Payment
permits Card,
UPI {
}
Pattern Matching
if(payment instanceof Card card){
}
The compiler can reason about all permitted implementations, improving safety and enabling future exhaustive checks.
10. Where are Sealed Classes used in enterprise applications?
Answer
Common use cases include:
- Payment types
- Order status
- Banking transactions
- Insurance policies
- Workflow states
- Notification channels
- Domain events
- Rule engines
Whenever the set of valid types is fixed, Sealed Classes are an excellent choice.
11. Explain a production use case of Sealed Classes.
Answer
Scenario
A banking application supports only three transaction types.
sealed interface Transaction
permits Deposit,
Withdrawal,
Transfer {
}
Each transaction implements its own validation and processing logic.
Result
- No unauthorized transaction types
- Better compile-time safety
- Cleaner business rules
- Easier maintenance
This approach accurately models the business domain.
12. What are common mistakes while using Sealed Classes?
Answer
Common mistakes include:
Using sealed for classes that are intended to be extended by external users.
Forgetting to specify one of the required modifiers (final, sealed, or non-sealed) on permitted subclasses.
Creating overly complex inheritance hierarchies.
Using Sealed Classes where interfaces or composition would be more appropriate.
Always evaluate whether restricting inheritance adds real value.
13. What are the best practices for Sealed Classes?
Answer
Recommended practices:
- Use Sealed Classes for fixed domain hierarchies.
- Prefer
finalwhen subclasses should not be extended further. - Use
non-sealedonly when additional extension is required. - Keep inheritance hierarchies simple.
- Combine Sealed Classes with Pattern Matching.
- Favor composition when inheritance is unnecessary.
- Clearly document the permitted hierarchy.
These practices improve maintainability and domain clarity.
14. How are Sealed Classes different from traditional inheritance?
Answer
Traditional inheritance allows unrestricted extension.
Example
class Vehicle {
}
Any class may extend it.
Sealed Classes explicitly define the allowed subclasses.
Example
sealed class Vehicle
permits Car,
Bike {
}
Benefits over traditional inheritance
- Predictable hierarchy
- Better compiler validation
- Stronger encapsulation
- Improved domain integrity
15. What interview tips should you remember about Sealed Classes?
Answer
Interviewers commonly ask:
- Why Sealed Classes were introduced.
sealedvsfinal.sealedvsnon-sealed.- The purpose of
permits. - Enterprise use cases.
- Pattern Matching integration.
- Domain modeling.
- Best practices.
Remember
- Sealed Classes restrict inheritance.
- The
permitsclause defines allowed subclasses. - Every permitted subclass must be
final,sealed, ornon-sealed. - Use Sealed Classes to model fixed business hierarchies.
- They integrate well with Pattern Matching.
- They improve compile-time safety and maintainability.
Summary
Sealed Classes give Java developers precise control over inheritance, enabling safer, more maintainable, and domain-driven designs. They help model business rules explicitly while improving compiler validation and reducing unintended extension.
Key Takeaways
- Understand why Sealed Classes were introduced.
- Learn the
sealedandpermitssyntax. - Know the roles of
final,sealed, andnon-sealed. - Use Sealed Classes for fixed business hierarchies.
- Combine them with Pattern Matching.
- Avoid unnecessary inheritance restrictions.
- Keep hierarchies simple and well documented.
- Prefer composition when inheritance is not required.
- Support interview answers with enterprise examples.
- Focus on real-world domain modeling rather than syntax alone.
Next Article
➡️ Records Interview Questions & Answers