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