Java предоставляет четыре типа вложенных классов, каждый с отличными характеристиками и областями применения. Понимание этих типов необходимо для написания эффективного, хорошо организованного кода.
Member Inner Class (внутренний класс-член): Нестатический класс, определённый внутри другого класса. Имеет доступ ко всем членам внешнего класса, включая приватные переменные и методы.
Static Nested Class (статический вложенный класс): Статический класс, определённый внутри другого класса. В отличие от внутренних классов-членов, он не может получить доступ к нестатическим членам внешнего класса и может быть создан независимо.
Local Inner Class (локальный внутренний класс): Класс, определённый внутри метода или блока кода внешнего класса. Имеет доступ к локальным переменным (которые фактически являются final) и ко всем членам внешнего класса, но его область видимости ограничена этим конкретным методом или блоком.
Anonymous Inner Class (анонимный внутренний класс): Класс без имени, обычно используется для быстрой реализации интерфейсов или абстрактных классов. Объявляется и создаётся в одном выражении, часто применяется при обработке событий и реализации callback-функций.
Главное различие между этими типами связано с:
Выбирая тип вложенного класса, подумай, нужен ли тебе доступ к экземпляру внешнего класса, какова область его использования и нужно ли классу имя или он может быть анонимным. Каждый тип служит специфическим архитектурным целям в Java-приложениях.
Статический вложенный класс может получить доступ к нестатическим членам внешнего класса только если он хранит ссылку на экземпляр внешнего класса.
Новый — ещё не проверен сообществом
Вы