Skip to content

Latest commit

 

History

History
48 lines (35 loc) · 977 Bytes

File metadata and controls

48 lines (35 loc) · 977 Bytes

Sealed Classes and Interface

  • Beginning with JDK 17, java supports declaration of a class that can be inherited by only specific subclasses.
  • Sealed interfaces controls implementing classes and extending interfaces.
  • The subclass of sealed classes should be declared either final, sealed or non-sealed.
  • If all classes or interfaces are in the same file, permit clause is not required.

Sealed Classes

public sealed class MySealedClass permits A,B,C{
    // ...
}

public final class A extends MySealedClass{
    // ...
}

public sealed class B extends MySealedClass permits D{
    // ...
}

public non-sealed class C extends MySealedClass{
    // ...
}

Sealed interfaces

public sealed interface MySealedIf permits A,B,IC{
    void myMeth();
}

public final class A implements MySealedIf{
    // ...
}

public non-sealed class B implements MySealedIf{
    // ...
}

public non-sealed interface IC extends MySealedIf{
    // ...
}