> For the complete documentation index, see [llms.txt](https://kaze.gitbook.io/qa-theory/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kaze.gitbook.io/qa-theory/osnovy-programmirovaniya-na-java/vlozhennye-klassy.md).

# Вложенные классы

В Java вложенные классы — это классы, определенные внутри другого класса. Они могут быть статическими или нестатическими (также известными как внутренние классы). Вот основные различия между ними:

1. **Статические вложенные классы (Static Nested Classes)**:

   * Они объявлены с ключевым словом `static`.
   * Могут обращаться только к статическим членам внешнего класса.
   * Создание экземпляра статического вложенного класса не требует создания экземпляра внешнего класса.
   * Они часто используются для группировки связанных классов в одном месте.

   Пример статического вложенного класса:

   ```java
   public class OuterClass {
       static class StaticNestedClass {
           // Код статического вложенного класса
       }
   }
   ```
2. **Нестатические вложенные классы (Inner Classes)**:

   * Они не объявлены с ключевым словом `static`.
   * Имеют доступ ко всем членам внешнего класса, включая его приватные члены.
   * Для создания экземпляра нестатического вложенного класса сначала необходимо создать экземпляр внешнего класса.
   * Они могут быть обычными внутренними классами (обычные вложенные классы), локальными классами или анонимными классами.

   Пример нестатического вложенного класса:

   ```java
   public class OuterClass {
       class InnerClass {
           // Код нестатического вложенного класса
       }
   }
   ```
