Junior — Middle
Care este diferența dintre o clasă internă și o clasă imbricată în programare?
sobes.tech AI
Răspuns de la AI
În Java (și în Android) o clasă imbricată este orice clasă declarată în interiorul altei clase. Clasele imbricate sunt de două tipuri:
- Clasa imbricată statică (static nested class) — declarată cu modificatorul
static. Nu are acces direct la membrii non-staționari ai clasei exterioare. - Clasa internă (inner class) — clasă imbricată fără modificatorul
static. Este legată de o instanță a clasei exterioare și are acces la câmpurile și metodele sale non-staționare.
Exemplu:
class Outer {
private int outerField = 10;
static class StaticNested {
void print() {
// Nu se poate accesa direct outerField
System.out.println("Clasă imbricată statică");
}
}
class Inner {
void print() {
// Se poate accesa outerField
System.out.println("Clasă internă, outerField = " + outerField);
}
}
}
Prin urmare, diferența principală este că clasa internă este legată de un obiect al clasei exterioare și poate accesa membrii săi non-staționari, în timp ce clasa imbricată statică nu poate.