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();