Junior — Middle
Wat is het verschil tussen een interne klasse en een geneste klasse in programmeren?
sobes.tech AI
Antwoord van AI
In Java (en Android) is een geneste klasse elke klasse die binnen een andere klasse is gedeclareerd. Geneste klassen zijn er in twee types:
- Statische geneste klasse (static nested class) — gedeclareerd met de modifier
static. Ze heeft geen directe toegang tot de niet-statische leden van de buitenklasse. - Binnenklasse (inner class) — een geneste klasse zonder de
staticmodifier. Ze is gekoppeld aan een instantie van de buitenklasse en heeft toegang tot zijn niet-statische velden en methoden.
Voorbeeld:
class Outer {
private int outerField = 10;
static class StaticNested {
void print() {
// Kan niet direct toegang krijgen tot outerField
System.out.println("Statische geneste klasse");
}
}
class Inner {
void print() {
// Kan toegang krijgen tot outerField
System.out.println("Binnenklasse, outerField = " + outerField);
}
}
}
De belangrijkste verschil is dat de binnenklasse gekoppeld is aan een object van de buitenklasse en toegang heeft tot zijn niet-statische leden, terwijl de statische geneste klasse dat niet heeft.