Sobes.tech
Junior

Čo sú to vnorené triedy?

sobes.tech AI

Odpoveď od AI

Vnorené triedy sú triedy, ktoré sú deklarované vnútri inej triedy. Delia sa na dva hlavné typy: statické vnorené triedy (statické členy triedy) a vnorené triedy (nestatické členy triedy).

Statické vnorené triedy:

  • Sú spojené s vonkajšou triedou, nie s jej inštanciou.
  • Môžu pristupovať iba k statickým členom vonkajšej triedy.
  • Môžu byť vytvorené bez inštancie vonkajšej triedy.

Vnorené triedy:

  • Sú spojené s inštanciou vonkajšej triedy.
  • Môžu pristupovať ku všetkým členom vonkajšej triedy (vrátane private), čiže statickým aj nestatickým.
  • Vyžadujú inštanciu vonkajšej triedy na ich vytvorenie.

Príklady použitia:

  • Zoskupovanie: Logicky súvisiace triedy možno spojiť na zlepšenie čitateľnosti a organizácie kódu.
  • Zapuzdrenie: Vnorené triedy majú prístup k súkromným členom vonkajšej triedy, čo umožňuje zapuzdriť detaily implementácie.
  • Poslucháči udalostí (Java): Často sa používajú na vytváranie anonymných vnorených tried.
  • Pomocné triedy: Malé triedy používané iba vonkajšou triedou.
// Príklad statickej vnorené triedy
class OuterClass {
    static int outerStaticField = 1;
    int outerInstanceField = 2;

    static class StaticNestedClass {
        void display() {
            System.out.println("Vonkajšie statické pole: " + outerStaticField);
            // Priamo sa nedá pristupovať k outerInstanceField
        }
    }
}

// Príklad vnorené triedy
class AnotherOuterClass {
    int outerField = 10;

    class InnerClass {
        void display() {
            System.out.println("Vonkajšie pole: " + outerField); // Prístup k poľu vonkajšej triedy
        }
    }
}

Porovnávacia tabuľka:

Charakteristika Statická vnorená trieda Vnorená trieda
Vzťah S vonkajšou triedou S inštanciou vonkajšej triedy
Prístup k členom vonkajšej Iba statické Všetky členy (vrátane private)
Vyžaduje inštanciu Nie Áno
Môže obsahovať statické členy Áno Nie (okrem konštánt)