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) |