Sobes.tech
Back to questions
Junior — Middle
64

Каково различие между внутренним классом и вложенным классом в программировании?

Companies where asked
Ubic
ПромсвязьбанкПромсвязьбанк

Answer from AI

sobes.tech AI

В Java (и в Android) вложенный класс — это любой класс, объявленный внутри другого класса. Вложенные классы бывают двух типов:

  1. Статический вложенный класс (static nested class) — объявлен с модификатором static. Он не имеет доступа к нестатическим членам внешнего класса напрямую.
  2. Внутренний класс (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);
        }
    }
}

Таким образом, главное различие — внутренний класс связан с объектом внешнего класса и может обращаться к его нестатическим членам, а статический вложенный класс — нет.