Back to questions
Промсвязьбанк
Junior — Middle
64
Каково различие между внутренним классом и вложенным классом в программировании?
Companies where asked
Ubic
Answer from AI
sobes.tech AI
В Java (и в Android) вложенный класс — это любой класс, объявленный внутри другого класса. Вложенные классы бывают двух типов:
- Статический вложенный класс (static nested class) — объявлен с модификатором
static. Он не имеет доступа к нестатическим членам внешнего класса напрямую. - Внутренний класс (inner class) — вложенный класс без модификатора
static. Он связан с экземпляром внешнего класса и имеет доступ к его нестатическим полям и методам.
Пример:
class Outer {
private int outerField = 10;
static class StaticNested {
void print() {
// Нельзя обратиться к outerField напрямую
System.out.println("Static nested class");
}
}
class Inner {
void print() {
// Можно обратиться к outerField
System.out.println("Inner class, outerField = " + outerField);
}
}
}
Таким образом, главное различие — внутренний класс связан с объектом внешнего класса и может обращаться к его нестатическим членам, а статический вложенный класс — нет.