Язык программирования Java позволяет вам определять класс в другом классе. Такой класс называется вложенным классом и иллюстрируется здесь:
class OuterClass {
...
class NestedClass {
...
}
}
Вложенные классы делятся на две категории: статические и нестатические. Вложенные классы, которые объявлены статическими, называются статическими вложенными классами. Нестатические вложенные классы называются внутренними классами.
Мы должны помнить одну вещь: нестатические вложенные классы (внутренние классы) имеют доступ к другим членам включающего класса, даже если они объявлены закрытыми. Статические вложенные классы имеют доступ к другим членам включающего класса, только если они являются статическими. Он не может получить доступ к нестатическим членам внешнего класса.
Как и в случае методов и переменных класса, статический вложенный класс связан с его внешним классом.
Например, чтобы создать объект для статического вложенного класса, используйте следующий синтаксис:
OuterClass.StaticNestedClass nestedObject =
new OuterClass.StaticNestedClass();
Чтобы создать экземпляр внутреннего класса, вы должны сначала создать экземпляр внешнего класса. Затем создайте внутренний объект во внешнем объекте с этим синтаксисом:
OuterClass.InnerClass innerObject = new OuterClass().new InnerClass();
Почему мы используем вложенные классы
- Это способ логической группировки классов, которые используются только в одном месте.
- Увеличивает инкапсуляцию.
- Это может привести к более удобочитаемому и поддерживаемому коду.
Источник: Учебные руководства по Java ™ - Вложенные классы