Sobes.tech
Junior — Middle

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

sobes.tech AI

Отговор от 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("Статичен вложен клас");
        }
    }

    class Inner {
        void print() {
            // Може да се обърне към outerField
            System.out.println("Вътрешен клас, outerField = " + outerField);
        }
    }
}

Основната разлика е, че вътрешният клас е свързан с обект на външния клас и може да достъпва неговите нестатични членове, а статичният вложен клас — не.