Назад к вопросам
Ozon Fresh
Junior — Middle
77
Объясните различия между внутренним классом и вложенным классом в языке программирования Java.
Компании, где спрашивали
ПСБ
Ответ от нейросети
sobes.tech AI
В Java термин "вложенный класс" (nested class) — это общий термин для всех классов, объявленных внутри другого класса. Вложенные классы делятся на два типа:
-
Статический вложенный класс (static nested class) — объявлен с модификатором
static. Он не имеет доступа к нестатическим членам внешнего класса напрямую. -
Внутренний класс (inner class) — это нестатический вложенный класс, который связан с экземпляром внешнего класса и имеет доступ к его нестатическим полям и методам.
Пример:
public class Outer {
private int outerField = 10;
// Внутренний класс
class Inner {
void print() {
System.out.println("Outer field: " + outerField);
}
}
// Статический вложенный класс
static class StaticNested {
void print() {
System.out.println("Статический вложенный класс не имеет доступа к outerField напрямую");
}
}
}
Таким образом, внутренний класс связан с объектом внешнего класса и может обращаться к его нестатическим членам, а статический вложенный класс — нет.