Junior — Middle
Jaký je rozdíl mezi vnitřní třídou a vnořenou třídou v programování?
sobes.tech AI
Odpověď od AI
V jazyce Java (a v Androidu) je vnořená třída jakákoli třída deklarovaná uvnitř jiné třídy. Vnořené třídy jsou dvou typů:
- Statická vnořená třída (static nested class) — deklarována s modifikátorem
static. Nemá přímý přístup k nestatickým členům vnější třídy. - Vnitřní třída (inner class) — vnořená třída bez modifikátoru
static. Je spojena s instancí vnější třídy a má přístup k jejím nestatickým polím a metodám.
Příklad:
class Outer {
private int outerField = 10;
static class StaticNested {
void print() {
// Nelze přímo přistupovat k outerField
System.out.println("Statická vnořená třída");
}
}
class Inner {
void print() {
// Lze přistupovat k outerField
System.out.println("Vnitřní třída, outerField = " + outerField);
}
}
}
Hlavní rozdíl je, že vnitřní třída je spojena s objektem vnější třídy a může přistupovat k jejím nestatickým členům, zatímco statická vnořená třída nikoliv.