TGViewer
Java Portal | Программирование Java Portal | Программирование @java_iibrary · 11.7K subscribers
Post #2391 1.51K
💡В Java sealed types позволяют закрыть граф наследования с помощью permits.

Наследоваться от sealed-класса или интерфейса могут только явно перечисленные подтипы.
Каждый разрешённый подтип должен быть объявлен как final, sealed или non-sealed.
non-sealed снова открывает возможность наследования ниже по этой ветке. #SoftwareDevelopment

Пример кода, и sample-проект на GitHub:

// java-17-sealed-classes — закрытая иерархия

public abstract sealed class Shape permits Circle, Rectangle, FancyRectangle {
public abstract double area();
}

public final class Circle extends Shape { /* листовой класс — без дальнейшего наследования */ }

public sealed class Rectangle extends Shape permits Square, Oblong { }

public final class Square extends Rectangle { }

public non-sealed class FancyRectangle extends Shape { }
// RoundedRectangle наследуется от FancyRectangle — не указан в Shape.permits (открытая ветка)


Java 17 Sealed Classes Example Project

👉 Java Portal
  • 👍 4
More from @java_iibrary
  1. Sep 23, 2026Готовимся к System Design интервью уровня Middle и Senior Полезный конспект по проектирова…
  2. Sep 23, 2026Java-разработчики, знаете разницу между Shallow Copy и Deep Copy? Вы копируете объект, но…
  3. Sep 22, 2026Java-разработчики: Почему ArrayList увеличивает свою ёмкость примерно на 50%, когда заканч…
  4. Sep 22, 2026Прогрев от Java-бабули 🙂 👉 Java Portal
  5. Sep 21, 2026Шпаргалка по проектированию веб систем System Design 101 Подробное руководство по архитект…
  6. Sep 21, 2026💡 Java/Spring: отдавайте предпочтение constructor injection вместо @Autowired для полей.…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →