В Java существуют следующие основные типы классов:
-
Обычные (Standard Class)
- Могут содержать поля, методы, конструкторы.
- Могут быть унаследованы другими классами, если не объявлены как
final.
- Могут реализовывать интерфейсы.
- Объявляются с модификаторами доступа (
public, protected, default, private).
-
Абстрактные (Abstract Class)
- Объявляются с ключевым словом
abstract.
- Не могут быть непосредственно инстанцированы.
- Могут содержать абстрактные методы (без реализации) и обычные методы.
- Предназначены для наследования; подклассы должны предоставлять реализацию абстрактных методов.
java
-
Финальные (Final Class)
- Объявляются с ключевым словом
final.
- Не могут быть унаследованы другими классами.
- Применяются для предотвращения расширения класса, обеспечения безопасности или неизменности реализации.
java
-
Перечисления (Enum)
- Особый тип класса, предназначенный для представления фиксированного набора констант.
- Объявляются с ключевым словом
enum.
- Константы перечисления по умолчанию являются
public static final.
- Могут иметь поля, методы и конструкторы (со скрытым модификатором
private).
java
-
Анонимные (Anonymous Class)
- Класс без имени, который создается и инстанцируется одновременно.
- Часто используются для реализации интерфейсов или расширения классов "на лету", когда требуется одноразовое использование.
- Не могут иметь явных конструкторов.
java
-
Вложенные (Nested Class)
- Классы, объявленные внутри другого класса.
- Бывают двух типов:
- Статические вложенные классы (Static Nested Class): объявляются с ключевым словом
static. Не имеют доступа к нестатическим членам внешнего класса напрямую. Инстанцируются как обычные классы.
- Внутренние классы (Inner Class): не объявляются как
static. Имеют доступ ко всем членам внешнего класса, включая private. Требуют экземпляра внешнего класса для создания своего экземпляра.
java
-
Рекордные классы (Record - с Java 14)
- Объявляются с ключевым словом
record.
- Предназначены для хранения данных. Компилятор автоматически генерирует конструктор, методы доступа к полям (
accessor methods), equals(), hashCode() и toString().
- Поля рекорда неявно являются
final.
java