Sobes.tech
Back to questions
Junior — Middle
75

Объясните различия между внутренним классом и вложенным классом в языке программирования Java.

Companies where asked
ПСБ
Ozon FreshOzon Fresh

Answer from AI

sobes.tech AI

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

  1. Статический вложенный класс (static nested class) — объявлен с модификатором static. Он не имеет доступа к нестатическим членам внешнего класса напрямую.

  2. Внутренний класс (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 напрямую");
        }
    }
}

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