Sobes.tech
Middle

Čo sú to vnorené triedy?

sobes.tech AI

Odpoveď od AI

Vnorená trieda je trieda definovaná vnútri inej triedy.

Druhy vnorených tried v Jave:

  • Statické vnorené triedy (Static Nested Classes):

    • Sú dostupné z vonkajšej triedy bez jej inštancie.
    • Nemajú priamy prístup k nestatickým poliam a metódam vonkajšej triedy.
    • Vyhlasujú sa kľúčovým slovom static.
  • Vnorené triedy (Inner Classes):

    • Člen-vnorené triedy (Member Inner Classes):
      • Vyhlasujú sa na úrovni členov vonkajšej triedy.
      • Majú prístup ku všetkým členom vonkajšej triedy (vrátane súkromných).
      • Vyžadujú inštanciu vonkajšej triedy na vytvorenie vlastného inštancie.
    • Lokálne vnorené triedy (Local Inner Classes):
      • Definujú sa v rámci metódy, konštruktora alebo inicializačného bloku.
      • Sú viditeľné iba v rámci tohto metódy/bloku.
      • Majú prístup k final alebo efektívne final lokálnym premenným vonkajšieho kontextu.
    • Anonymné vnorené triedy (Anonymous Inner Classes):
      • Triedy bez mena.
      • Používajú sa na vytváranie objektov, ktoré okamžite implementujú rozhranie alebo rozširujú triedu.
      • Sú definované a inštanciované naraz.

Príklad statickej vnorené triedy:

class OuterClass {
    private static String msg = "Hello from Outer";

    static class StaticNestedClass {
        public void display() {
            // Môže získať prístup k statickým členom vonkajšej triedy
            System.out.println(msg);
        }
    }
}
// Použitie
// OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
// nestedObject.display();

Príklad člen-vnorené triedy:

class OuterClass {
    private String msg = "Hello from Outer";

    class InnerClass {
        public void display() {
            // Môže získať prístup ku všetkým členom vonkajšej triedy
            System.out.println(msg);
        }
    }
}
// Použitie
// OuterClass outerObject = new OuterClass();
// OuterClass.InnerClass innerObject = outerObject.new InnerClass();
// innerObject.display();

Výhody používania vnorených tried:

  • Zoskupovanie: Logicky súvisiace triedy môžu byť zoskupené.
  • Inkapitulácia: Vnorené triedy môžu mať prístup k súkromným členom vonkajšej triedy, čím zabezpečujú lepšiu inkapsuláciu.
  • Čitateľnosť a údržba: Skrývajú pomocné triedy vnútri hlavnej triedy.
  • Efektivita: Môžu byť použité na vytváranie kompaktnejších a efektívnejších dátových štruktúr.