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 final when subclasses should not be extended further.
  • Use non-sealed only 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.
  • sealed vs final.
  • sealed vs non-sealed.
  • The purpose of permits.
  • Enterprise use cases.
  • Pattern Matching integration.
  • Domain modeling.
  • Best practices.

Remember

  • Sealed Classes restrict inheritance.
  • The permits clause defines allowed subclasses.
  • Every permitted subclass must be final, sealed, or non-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 sealed and permits syntax.
  • Know the roles of final, sealed, and non-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