Sobes.tech
Junior — Middle

Jaký je rozdíl mezi vnitřní třídou a vnořenou třídou v programování?

sobes.tech AI

Odpověď od AI

V jazyce Java (a v Androidu) je vnořená třída jakákoli třída deklarovaná uvnitř jiné třídy. Vnořené třídy jsou dvou typů:

  1. Statická vnořená třída (static nested class) — deklarována s modifikátorem static. Nemá přímý přístup k nestatickým členům vnější třídy.
  2. Vnitřní třída (inner class) — vnořená třída bez modifikátoru static. Je spojena s instancí vnější třídy a má přístup k jejím nestatickým polím a metodám.

Příklad:

class Outer {
    private int outerField = 10;

    static class StaticNested {
        void print() {
            // Nelze přímo přistupovat k outerField
            System.out.println("Statická vnořená třída");
        }
    }

    class Inner {
        void print() {
            // Lze přistupovat k outerField
            System.out.println("Vnitřní třída, outerField = " + outerField);
        }
    }
}

Hlavní rozdíl je, že vnitřní třída je spojena s objektem vnější třídy a může přistupovat k jejím nestatickým členům, zatímco statická vnořená třída nikoliv.