Назад к вопросам
Junior
71
questionbank
Какие бывают типы классов в Java?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
- Обычные (regular / concrete) классы: Могут быть инстанцированы, содержат поля, методы, конструкторы.
- Абстрактные классы: Не могут быть инстанцированы напрямую. Могут содержать абстрактные методы (без реализации) и обычные методы. Используются для определения общих характеристик для подклассов.
abstract class AbstractClass { abstract void abstractMethod(); // Абстрактный метод void regularMethod() { System.out.println("Обычный метод"); } } - Вложенные классы (nested classes): Объявляются внутри другого класса. Могут быть:
- Статические вложенные классы (static nested classes): Не имеют доступа к нестатическим членам внешнего класса. Создаются без экземпляра внешнего класса.
class OuterClass { static class StaticNestedClass { // ... } } - Внутренние классы (inner classes): Имеют доступ ко всем членам внешнего класса (включая приватные). Связаны с экземпляром внешнего класса.
class OuterClass { class InnerClass { // Имеет доступ к членам OuterClass } } - Локальные классы (local classes): Объявляются внутри метода, цикла или блока if. Доступ к ним ограничен областью их объявления.
class OuterClass { void someMethod() { class LocalClass { // Объявлен локально } LocalClass obj = new LocalClass(); } } - Анонимные классы (anonymous classes): Без имени, создаются одновременно с объявлением или инстанцированием. Используются для одноразового использования.
interface MyInterface { void myMethod(); } MyInterface anon = new MyInterface() { @Override public void myMethod() { System.out.println("Анонимный класс"); } };
- Статические вложенные классы (static nested classes): Не имеют доступа к нестатическим членам внешнего класса. Создаются без экземпляра внешнего класса.
- Классы-записи (records) (с Java 14): Компактный синтаксис для объявления неизменяемых классов, предназначенных для хранения данных (POJO).
record Person(String name, int age) { // Автоматически сгенерированы конструктор, геттеры, equals(), hashCode(), toString() }