Основное отличие статических внутренних классов от нестатических в языке Java заключается в том, что нестатические классы связаны с экземпляром внешнего класса и имеют доступ к нестатическим членам внешнего класса, в то время как статические классы не имеют такого доступа. 2
Статические внутренние классы декларируются внутри основного класса и обозначаются ключевым словом static. 1 Они не имеют доступа к членам внешнего класса за исключением статических. 1 Статический внутренний класс может содержать статические поля, методы и классы, в отличие от других типов внутренних классов. 1
Нестатический внутренний класс привязан к экземплярам своего заключающего класса и имеет доступ ко всем членам заключающего класса, а не только к статическим. 4 Для создания экземпляра внутреннего класса требуется экземпляр его заключающего класса. 4