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
finalalebo efektívnefinalloká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.
- Člen-vnorené triedy (Member Inner Classes):
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.