Middle
Šta su ugnježdene klase?
sobes.tech АИ
Одговор од АИ
Ugnježdeni klasa je klasa definisana unutar druge klase.
Vrste ugniježđenih klasa u Javi:
-
Statičke ugniježdene klase (Static Nested Classes):
- Dostupne su iz spoljašnje klase bez njenog instance.
- Nemaju pristup nestatičkim poljima i metodama spoljašnje klase direktno.
- Deklarišu se ključnom rečju
static.
-
Unutrašnje klase (Inner Classes):
- Član-unutrašnje klase (Member Inner Classes):
- Deklarišu se na nivou članova spoljašnje klase.
- Imaju pristup svim članovima spoljašnje klase (uključujući privatne).
- Za kreiranje svog primera zahtevaju instancu spoljašnje klase.
- Lokalne unutrašnje klase (Local Inner Classes):
- Definišu se unutar metode, konstruktora ili inicijalizacionog bloka.
- Vidljive su samo unutar tog metoda/bloka.
- Imaju pristup
finalili efektivnofinallokalnim promenljivima spoljašnjeg konteksta.
- Anonimne unutrašnje klase (Anonymous Inner Classes):
- Klase bez imena.
- Koriste se za kreiranje objekata koji odmah implementiraju interfejs ili proširuju klasu.
- Definišu se i instanciraju u istoj operaciji.
- Član-unutrašnje klase (Member Inner Classes):
Primer statičke ugniježdene klase:
class OuterClass {
private static String msg = "Hello from Outer";
static class StaticNestedClass {
public void display() {
// Može pristupiti statičkim članovima spoljašnje klase
System.out.println(msg);
}
}
}
// Korišćenje
// OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
// nestedObject.display();
Primer član-unutrašnje klase:
class OuterClass {
private String msg = "Hello from Outer";
class InnerClass {
public void display() {
// Može pristupiti svim članovima spoljašnje klase
System.out.println(msg);
}
}
}
// Korišćenje
// OuterClass outerObject = new OuterClass();
// OuterClass.InnerClass innerObject = outerObject.new InnerClass();
// innerObject.display();
Prednosti korišćenja ugniježđenih klasa:
- Grupisanje: Logički povezani klase mogu biti grupisani.
- Inkapstilacija: Unutrašnje klase mogu imati pristup privatnim članovima spoljašnje klase, obezbeđujući bolju inkapsulaciju.
- Čitljivost i održavanje: Sakrivaju pomoćne klase unutar glavne klase.
- Efikasnost: Mogu se koristiti za kreiranje kompaktnih i efikasnih struktura podataka.