Sobes.tech
Middle

Co jsou to vnořené třídy a jak se používají v programování?

sobes.tech AI

Odpověď od AI

Vnořené třídy jsou třídy deklarované uvnitř jiné třídy. Umožňují logické seskupení tříd používaných pouze na jednom místě, zvyšují zapouzdření a činí kód přehlednějším.

Vnořené třídy jsou:

  • Statické (Statické vnořené třídy): Nemají přístup k nestatickým členům vnější třídy. Mohou být vytvářeny bez instance vnější třídy.
  • Neststatické (Vnitřní třídy): mají přístup ke všem členům vnější třídy (včetně soukromých). Pro vytvoření instance nestatické vnitřní třídy je potřeba instance vnější třídy.

Použití:

  • Skrytí implementace: Vnořená třída může být použita jako pomocná třída, jejíž detaily implementace by neměly být přístupné zvenčí.
  • Skupinování: Logické spojení úzce souvisejících tříd.
  • Implementace callbacků / posluchačů: Často se používá k vytváření anonymních vnitřních tříd pro implementaci rozhraní nebo abstraktních tříd.
  • Iterátory: Vnitřní třída je vhodná pro implementaci iterátoru, protože má přístup k vnitřnímu stavu kolekce.

Příklad (Java):

class OuterClass {
    private int outerField;

    // Statická vnořená třída
    static class StaticNestedClass {
        void print() {
            // Nemá přístup k outerField
            System.out.println("Z StaticNestedClass");
        }
    }

    // Vnitřní třída
    class InnerClass {
        void print() {
            // Má přístup k outerField
            System.out.println("outerField: " + outerField);
        }
    }
}
// Vytvoření instance statické vnořené třídy
OuterClass.StaticNestedClass staticNested = new OuterClass.StaticNestedClass();
staticNested.print();

// Vytvoření instance vnitřní třídy
OuterClass outer = new OuterClass();
OuterClass.InnerClass inner = outer.new InnerClass();
inner.print();