Junior — Middle
Mi a különbség a belső osztály és a beágyazott osztály között a programozásban?
sobes.tech MI
Válasz az MI-től
Java-ban (és Android-ben) a beágyazott osztály bármilyen osztály, amelyet egy másik osztályon belül deklarálnak. A beágyazott osztályok két típusba sorolhatók:
- Statikus beágyazott osztály (static nested class) — a
staticmódosítóval van deklarálva. Nincs közvetlen hozzáférése a külső osztály nem statikus tagjaihoz. - Belső osztály (inner class) — a
staticmódosító nélküli beágyazott osztály. Egy külső osztály példányához kapcsolódik, és hozzáfér a nem statikus mezőkhöz és metódusokhoz.
Példa:
class Outer {
private int outerField = 10;
static class StaticNested {
void print() {
// Nem lehet közvetlenül hozzáférni az outerField-hez
System.out.println("Statikus beágyazott osztály");
}
}
class Inner {
void print() {
// Hozzáférhet az outerField-hez
System.out.println("Belső osztály, outerField = " + outerField);
}
}
}
A fő különbség az, hogy a belső osztály egy külső osztály példányához kapcsolódik, és hozzáférhet nem statikus tagjaihoz, míg a statikus beágyazott osztály nem.