Kurz erklärt
Eine Klasse, die innerhalb einer anderen Klasse definiert ist — nützlich, wenn sie inhaltlich eng an die umschließende Klasse gebunden ist und sonst nirgendwo gebraucht wird.
Genauer
Eine nicht-statische innere Klasse hat automatisch Zugriff auf die Felder der äußeren Instanz. Für Klassen, die keinen solchen Zugriff brauchen, ist eine statische verschachtelte Klasse (static class) meist die sauberere Wahl, da sie unabhängig von einer äußeren Instanz existieren kann.