Sobes.tech
Junior

Co jsou to vnořené třídy?

sobes.tech AI

Odpověď od AI

Vnořené třídy jsou třídy deklarované uvnitř jiné třídy. Dělí se na dva hlavní typy: statické vnořené třídy (statické členy třídy) a vnitřní třídy (ne-staické členy).

Statické vnořené třídy:

  • Jsou spojeny s vnější třídou, nikoliv s jejím výskytem.
  • Mohou přistupovat pouze ke statickým členům vnější třídy.
  • Mohou být vytvořeny bez instance vnější třídy.

Vnitřní třídy:

  • Jsou spojeny s instancí vnější třídy.
  • Mohou přistupovat ke všem členům vnější třídy (statickým i nestatickým), včetně soukromých.
  • Vyžadují instanci vnější třídy pro jejich vytvoření.

Příklady použití:

  • Skupinování: Logicky související třídy lze spojit pro zvýšení čitelnosti a organizace kódu.
  • Zapouzdření: Vnitřní třídy mají přístup k soukromým členům vnější třídy, což umožňuje zapouzdřit implementační detaily.
  • Posluchači událostí (Java): Často se používají k vytváření anonymních vnitřních tříd.
  • Pomocné třídy: Malé třídy používané pouze vnější třídou.
// Příklad statické vnořené třídy
class OuterClass {
    static int outerStaticField = 1;
    int outerInstanceField = 2;

    static class StaticNestedClass {
        void display() {
            System.out.println("Vnější statické pole: " + outerStaticField);
            // Nelze přímo přistupovat k outerInstanceField
        }
    }
}

// Příklad vnitřní třídy
class AnotherOuterClass {
    int outerField = 10;

    class InnerClass {
        void display() {
            System.out.println("Vnější pole: " + outerField); // Přístup k poli vnější třídy
        }
    }
}

Porovnávací tabulka:

Vlastnost Statická vnořená třída Vnitřní třída
Vztah S vnější třídou S instancí vnější třídy
Přístup k vnějším členům Pouze statické Všechny členy (včetně soukromých)
Vyžaduje instanci Ne Ano
Může obsahovat statické členy Ano Ne (kromě konstant)