Sobes.tech
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)