Sobes.tech
Middle

Šta su ugnježdene klase i kako se primenjuju u programiranju?

sobes.tech АИ

Одговор од АИ

Ugnježdene klase su klase deklarisane unutar druge klase. Omogućavaju logičko grupisanje klasa koje se koriste samo na jednom mestu, povećavaju enkapsulaciju i čine kod čitljivijim.

Ugnježdene klase su:

  • Staticke (Staticke ugnježdene klase): Nemaju pristup nestatickim članovima spoljašnje klase. Mogu se kreirati bez instance spoljašnje klase.
  • Nestaticke (Unutrašnje klase): imaju pristup svim članovima spoljašnje klase (uključujući privatne). Za kreiranje instance nestaticke unutrašnje klase potrebna je instanca spoljašnje klase.

Primene:

  • Skrivanje implementacije: Ugnježdena klasa može se koristiti kao pomoćna klasa, čiji detalji implementacije ne bi trebalo da budu dostupni spolja.
  • Grupisanje: Logičko ujedinjenje usko povezanih klasa.
  • Implementacija callbackova / slušalaca: Često se koristi za kreiranje anonimnih unutrašnjih klasa za implementaciju interfejsa ili apstraktnih klasa.
  • Iteratori: Unutrašnja klasa je zgodna za implementaciju iteratora, jer ima pristup unutrašnjem stanju kolekcije.

Primer (Java):

class OuterClass {
    private int outerField;

    // Staticka ugnježdena klasa
    static class StaticNestedClass {
        void print() {
            // Nema pristup outerField
            System.out.println("Iz StaticNestedClass");
        }
    }

    // Unutrašnja klasa
    class InnerClass {
        void print() {
            // Ima pristup outerField
            System.out.println("outerField: " + outerField);
        }
    }
}
// Kreiranje instance statičke ugnježdene klase
OuterClass.StaticNestedClass staticNested = new OuterClass.StaticNestedClass();
staticNested.print();

// Kreiranje instance unutrašnje klase
OuterClass outer = new OuterClass();
OuterClass.InnerClass inner = outer.new InnerClass();
inner.print();