Вложенный класс – это любой класс, определённый внутри другого класса. Его можно разделить на два типа:
staticstatic (нестатический)Поэтому все внутренние классы – это вложенные классы, но не все вложенные классы являются внутренними.
Внутренние классы имеют полный доступ ко всем членам внешнего класса, включая приватные поля и методы. Это происходит потому, что внутренние классы хранят неявную ссылку на экземпляр внешнего класса.
Статические вложенные классы не могут напрямую обращаться к членам экземпляра внешнего класса. Они могут обращаться только к static-членам, поскольку у них нет неявной ссылки на экземпляр внешнего класса.
OuterClass.InnerClass inner = outerInstance.new InnerClass();
OuterClass.StaticNestedClass nested = new OuterClass.StaticNestedClass();
Используй внутренние классы, когда тебе нужна тесная связь с внешним классом и требуется доступ к его состоянию.
Используй статические вложенные классы, когда вложенный класс логически принадлежит внешнему классу, но работает независимо, или чтобы сгруппировать связанные классы без лишних зависимостей от внешнего класса.
Внутренний класс поддерживает неявную ссылку на экземпляр своего внешнего класса, что позволяет ему обращаться к приватным членам экземпляра внешнего класса.
Новый — ещё не проверен сообществом
Вы