Обычные (regular / concrete) классы: Могут быть инстанцированы, содержат поля, методы, конструкторы.
Абстрактные классы: Не могут быть инстанцированы напрямую. Могут содержать абстрактные методы (без реализации) и обычные методы. Используются для определения общих характеристик для подклассов.
java
Вложенные классы (nested classes): Объявляются внутри другого класса. Могут быть:
Статические вложенные классы (static nested classes): Не имеют доступа к нестатическим членам внешнего класса. Создаются без экземпляра внешнего класса.
java
Внутренние классы (inner classes): Имеют доступ ко всем членам внешнего класса (включая приватные). Связаны с экземпляром внешнего класса.
java
Локальные классы (local classes): Объявляются внутри метода, цикла или блока if. Доступ к ним ограничен областью их объявления.
java
Анонимные классы (anonymous classes): Без имени, создаются одновременно с объявлением или инстанцированием. Используются для одноразового использования.
java
Классы-записи (records) (с Java 14): Компактный синтаксис для объявления неизменяемых классов, предназначенных для хранения данных (POJO).