Junior
Mi az a beágyazott osztályok?
sobes.tech MI
Válasz az MI-től
A beágyazott osztályok olyan osztályok, amelyeket egy másik osztályon belül deklarálnak. Két fő típusuk van: statikus beágyazott osztályok (a osztály statikus tagjai) és belső osztályok (nem statikus tagok).
Statikus beágyazott osztályok:
- A külső osztályhoz kapcsolódnak, nem a példányához.
- Csak a külső osztály statikus tagjaira hivatkozhatnak.
- példány nélkül is létrehozhatók.
Belső osztályok:
- A külső osztály példányához kapcsolódnak.
- Minden külső osztálytaghoz hozzáférhetnek (statikus és nem statikus), beleértve a privátakat is.
- példányt igényelnek a létrehozásukhoz.
Használati példák:
- Csoportosítás: Logikailag összefüggő osztályokat lehet összefogni a kód olvashatóságának és szervezésének javítása érdekében.
- Encapsuláció: A belső osztályok hozzáférnek a külső osztály privát tagjaihoz, lehetővé téve a részletek elrejtését.
- Eseményfigyelők (Java): Gyakran használják névtelen belső osztályok létrehozására.
- Segédosztályok: Kis osztályok, amelyeket csak a külső osztály használ.
// Statikus belső osztály példája
class OuterClass {
static int outerStaticField = 1;
int outerInstanceField = 2;
static class StaticNestedClass {
void display() {
System.out.println("Külső statikus mező: " + outerStaticField);
// Nem lehet közvetlenül hozzáférni az outerInstanceField-hez
}
}
}
// Belső osztály példája
class AnotherOuterClass {
int outerField = 10;
class InnerClass {
void display() {
System.out.println("Külső mező: " + outerField); // Hozzáférés a külső osztály mezőjéhez
}
}
}
Összehasonlító táblázat:
| Jellemző | Statikus beágyazott osztály | Belső osztály |
|---|---|---|
| Kapcsolat | A külső osztállyal | Egy példányával a külső osztálynak |
| Hozzáférés a külső tagokhoz | Csak statikus | Minden tag (beleértve a privátakat is) |
| Példány szükséges | Nem | Igen |
| Tartalmazhat statikus tagokat | Igen | Nem (kivéve a konstansokat) |