Junior — Middle
Jaka jest różnica między klasą wewnętrzną a klasą zagnieżdżoną w programowaniu?
sobes.tech AI
Odpowiedź od AI
W Javie (i w Androidzie) klasa zagnieżdżona to dowolna klasa zadeklarowana wewnątrz innej klasy. Klasy zagnieżdżone dzielą się na dwa typy:
- Statyczna klasa zagnieżdżona (static nested class) — zadeklarowana ze słowem kluczowym
static. Nie ma bezpośredniego dostępu do niestatycznych członków klasy zewnętrznej. - Klasa wewnętrzna (inner class) — klasa zagnieżdżona bez modyfikatora
static. Jest powiązana z instancją klasy zewnętrznej i ma dostęp do jej niestatycznych pól i metod.
Przykład:
class Outer {
private int outerField = 10;
static class StaticNested {
void print() {
// Nie można bezpośrednio odwołać się do outerField
System.out.println("Statyczna klasa zagnieżdżona");
}
}
class Inner {
void print() {
// Można odwołać się do outerField
System.out.println("Klasa wewnętrzna, outerField = " + outerField);
}
}
}
Główna różnica polega na tym, że klasa wewnętrzna jest powiązana z obiektem klasy zewnętrznej i może odwoływać się do jej niestatycznych członków, podczas gdy klasa statyczna zagnieżdżona nie może tego robić.