461 подписчик

Java 739. Какие типы классов бывают в java (вложенные… и.т.д.)

200 прочитали
  В Java есть несколько типов вложенных (nested) классов:  1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions Tелеграмм канал: https://t.

В Java есть несколько типов вложенных (nested) классов:

  • Внутренние (Inner) классы: это классы, которые объявлены внутри другого класса и имеют доступ к его полям и методам, даже к приватным. Внутренние классы могут быть объявлены как статическими или нестатическими.Есть возможность обращения к внутренним полям и методам класса обертки. Не может иметь статических объявлений. Нельзя объявить таким образом интерфейс. А если его объявить без идентификатора static, то он автоматически будет добавлен.Внутри такого класса нельзя объявить перечисления.Если нужно явно получить this внешнего класса — OuterClass.this
  • Вложенные (Nested) классы: это классы, которые объявлены внутри другого класса, но не имеют доступа к его полям и методам. Вложенные классы могут быть объявлены как статическими или нестатическими.
  • Локальные (Local) классы: это классы, которые объявлены внутри метода или блока кода и имеют доступ к переменным и параметрам этого метода или блока кода.Видны только в пределах блока, в котором объявлены. Не могут быть объявлены как private/public/protected или static (по этой причине интерфейсы нельзя объявить локально). Не могут иметь внутри себя статических объявлений (полей, методов, классов). Имеют доступ к полям и методам обрамляющего класса. Можно обращаться к локальным переменным и параметрам метода, если они объявлены с модификатором final.
  • Анонимные (Anonymous) классы: это классы, которые не имеют имени и создаются "на лету" при создании объекта интерфейса или абстрактного класса. Они используются, когда требуется реализовать какой-то метод "на месте".
  • Статические (Static) классы: это вложенные классы, которые объявлены как статические и не имеют доступа к нестатическим полям и методам внешнего класса. Они обычно используются для группировки связанных сущностей в рамках одного пакета или модуля. Есть возможность обращения к внутренним статическим полям и методам класса обертки. Внутренние статические классы могут содержать только статические методы.
  • Обычные классы (Top level classes)
  • Интерфейсы (Interfaces)
  • Перечисления (Enum)

1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions

Tелеграмм канал: https://t.me/DEBAGanov

Мое резюме: https://github.com/DEBAGanov