Как выглядит sealed class в Java

«Как выглядит sealed class в Java» — вопрос из категории Java, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Sealed class в Java (начиная с Java 15) позволяет ограничить набор классов, которые могут его наследовать.

public sealed class Shape 
    permits Circle, Square, Rectangle {
    // общие методы/поля
}

final class Circle extends Shape {
    private final double radius;
    // реализация
}

non-sealed class Square extends Shape {
    private final double side;
    // реализация
}

sealed class Rectangle extends Shape 
    permits FilledRectangle {
    // реализация
}

final class FilledRectangle extends Rectangle {
    // реализация
}

Ключевые моменты:

  • sealed - модификатор класса
  • permits - перечисление разрешенных наследников
  • Наследники должны быть: final, sealed или non-sealed
  • Все наследники должны быть в том же модуле/пакете (если не указано иное)