Junior
Šta su ugnježdene klase?
sobes.tech АИ
Одговор од АИ
Ugnježdene klase su klase deklarisane unutar druge klase. One se dele na dva glavna tipa: statičke ugnježdene klase (statički članovi klase) i unutrašnje klase (nestatički članovi).
Statičke ugnježdene klase:
- Povezane su sa spoljašnjom klasom, a ne sa njenim primerkom.
- Mogu pristupati samo statičkim članovima spoljašnje klase.
- Mogu biti kreirane bez primerka spoljašnje klase.
Unutrašnje klase:
- Povezane su sa primerkom spoljašnje klase.
- Mogu pristupati svim članovima spoljašnje klase (statičkim i nestatičkim), uključujući privatne.
- Za njihovo kreiranje je potrebna instanca spoljašnje klase.
Primeri upotrebe:
- Grupisanje: Logički povezane klase mogu biti objedinjene radi poboljšanja čitljivosti i organizacije koda.
- Enkapsulacija: Unutrašnje klase imaju pristup privatnim članovima spoljašnje klase, omogućavajući enkapsulaciju detalja implementacije.
- Slušaoci događaja (Java): Često se koriste za kreiranje anonimnih unutrašnjih klasa.
- Pomoćne klase: Male klase koje se koriste samo od strane spoljašnje klase.
// Primer statičke ugnježdene klase
class OuterClass {
static int outerStaticField = 1;
int outerInstanceField = 2;
static class StaticNestedClass {
void display() {
System.out.println("Spoljašnje statičko polje: " + outerStaticField);
// Nije moguće direktno pristupiti outerInstanceField
}
}
}
// Primer unutrašnje klase
class AnotherOuterClass {
int outerField = 10;
class InnerClass {
void display() {
System.out.println("Spoljašnje polje: " + outerField); // Pristup polju spoljašnje klase
}
}
}
Tabela poređenja:
| Osobina | Statička ugnježdena klasa | Unutrašnja klasa |
|---|---|---|
| Veza | Sa spoljašnjom klasom | Sa instancom spoljašnje klase |
| Pristup spoljnim članovima | Samo statičkim | Svim članovima (uključujući privatne) |
| Potreban primerak | Ne | Da |
| Može sadržavati statičke članove | Da | Ne (osim konstanti) |