Можно ли наследоваться от Sealed Class в Java

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

Ответ

Да, можно, но с ограничениями. Sealed Class (введён в Java 17) позволяет чётко контролировать, какие классы могут его наследовать.

sealed class Shape permits Circle, Square {
    // базовый класс
}

final class Circle extends Shape { /*...*/ }
final class Square extends Shape { /*...*/ }

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

  1. Подклассы должны быть явно перечислены через permits
  2. Подклассы должны быть либо final, sealed, либо non-sealed
  3. Все наследники должны находиться в том же модуле/пакете (если permits не указан)

Пример с non-sealed:

non-sealed class Rectangle extends Shape { /*...*/ }

Это позволяет создавать открытые ветки наследования.