Middle
Czym są klasy zagnieżdżone i jak są stosowane w programowaniu?
sobes.tech AI
Odpowiedź od AI
Klasy zagnieżdżone to klasy zadeklarowane wewnątrz innej klasy. Pozwalają logicznie grupować klasy używane tylko w jednym miejscu, zwiększają enkapsulację i czynią kod bardziej czytelnym.
Klasy zagnieżdżone dzielą się na:
- Statyczne (Statyczne klasy zagnieżdżone): Nie mają dostępu do nie-statycznych członków klasy zewnętrznej. Mogą być tworzone bez instancji klasy zewnętrznej.
- Niestatyczne (Klasy wewnętrzne): mają dostęp do wszystkich członków klasy zewnętrznej (w tym prywatnych). Do tworzenia instancji klasy wewnętrznej niestatycznej potrzebna jest instancja klasy zewnętrznej.
Zastosowania:
- Ukrywanie implementacji: Klasa zagnieżdżona może służyć jako klasa pomocnicza, której szczegóły implementacji nie powinny być dostępne na zewnątrz.
- Grupowanie: Logiczne połączenie ściśle powiązanych klas.
- Implementacja callbacków / słuchaczy: Często używana do tworzenia anonimowych klas wewnętrznych do implementacji interfejsów lub klas abstrakcyjnych.
- Iteratory: Klasa wewnętrzna jest wygodna do implementacji iteratora, ponieważ ma dostęp do wewnętrznego stanu kolekcji.
Przykład (Java):
class OuterClass {
private int outerField;
// Statyczna klasa zagnieżdżona
static class StaticNestedClass {
void print() {
// Nie ma dostępu do outerField
System.out.println("Z StaticNestedClass");
}
}
// Klasa wewnętrzna niestatyczna
class InnerClass {
void print() {
// Ma dostęp do outerField
System.out.println("outerField: " + outerField);
}
}
}
// Tworzenie instancji klasy zagnieżdżonej statycznej
OuterClass.StaticNestedClass staticNested = new OuterClass.StaticNestedClass();
staticNested.print();
// Tworzenie instancji klasy wewnętrznej
OuterClass outer = new OuterClass();
OuterClass.InnerClass inner = outer.new InnerClass();
inner.print();