Да, внутренний класс имеет полный доступ ко всем членам внешнего класса, включая закрытые (private) и защищенные (protected) члены.
Внутренние классы создаются в контексте внешнего класса и являются своего рода членом внешнего класса. Как таковые, они могут свободно обращаться к нестатическим полям и методам внешнего класса, используя ключевое слово this. Они также могут использовать все другие модификаторы доступа, такие как private, protected и public, для получения доступа к членам внешнего класса.
Вот пример внутреннего класса, который обращается к закрытому полю внешнего класса:
public class Outer {
private int x = 10;
public class Inner {
public void printX() {
System.out.println(x);
// Обращение к закрытому полю внешнего класса
}
}
}
Здесь внутренний класс Inner может обращаться к закрытому полю x внешнего класса без каких-либо проблем.
Через экземпляр внешнего класса можно создать экземпляр внутреннего класса и использовать его методы:
Outer outer = new Outer(); /
/ Создание экземпляра внешнего класса
Outer.Inner inner = outer.new Inner();
// Создание экземпляра внутреннего класса
inner.printX(); // Выводит 10
Таким образом, внутренний класс имеет полный доступ ко всем членам внешнего класса и может использоваться для выполнения задачи, которую не удобно выполнять в самом внешнем классе.
1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions
Tелеграмм канал: https://t.me/DEBAGanov
Мое резюме: https://github.com/DEBAGanov