Middle
Mi az a beágyazott osztályok?
sobes.tech MI
Válasz az MI-től
Egy beágyazott osztály egy olyan osztály, amely egy másik osztályon belül van definiálva.
A Java-ban létező beágyazott osztályok típusai:
-
Statikus beágyazott osztályok (Static Nested Classes):
- Elérhetőek a külső osztály példánya nélkül.
- Nincs közvetlen hozzáférésük a nem statikus mezőkhöz és metódusokhoz a külső osztályban.
- A
statickulcsszóval vannak deklarálva.
-
Belső osztályok (Inner Classes):
- Tagbelső osztályok (Member Inner Classes):
- A külső osztály tagjaként vannak deklarálva.
- Hozzáférnek minden külső osztály taghoz (beleértve a privátokat is).
- Egy példány külső osztály példányára van szükség a példányuk létrehozásához.
- Helyi belső osztályok (Local Inner Classes):
- Egy metódus, konstruktor vagy inicializáló blokk belsejében vannak definiálva.
- Csak ebben a metódusban/blokkból láthatóak.
- Hozzáférnek a külső kontextusban lévő
finalvagy effektívenfinalváltozókhoz.
- Névtelen belső osztályok (Anonymous Inner Classes):
- Név nélküli osztályok.
- Azonnal implementáló interfészt vagy kiterjesztő osztályt hoznak létre.
- Egy műveletben vannak definiálva és példányosítva.
- Tagbelső osztályok (Member Inner Classes):
Példa egy statikus beágyazott osztályra:
class OuterClass {
private static String msg = "Hello from Outer";
static class StaticNestedClass {
public void display() {
// Hozzáférhet a külső osztály statikus tagjaihoz
System.out.println(msg);
}
}
}
// Használat
// OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
// nestedObject.display();
Példa egy tagbelső osztályra:
class OuterClass {
private String msg = "Hello from Outer";
class InnerClass {
public void display() {
// Hozzáfér minden külső osztály taghoz
System.out.println(msg);
}
}
}
// Használat
// OuterClass outerObject = new OuterClass();
// OuterClass.InnerClass innerObject = outerObject.new InnerClass();
// innerObject.display();
A beágyazott osztályok használatának előnyei:
- Csoportosítás: Logikailag összefüggő osztályokat lehet csoportosítani.
- Encapsuláció: A belső osztályok hozzáférhetnek a külső osztály privát tagjaihoz, javítva az inkapszulációt.
- Átláthatóság és karbantartás: Segédosztályokat rejt el a főosztályon belül.
- Hatékonyság: Használható kompaktabb és hatékonyabb adatszerkezetek létrehozására.