Вложенные классы в Java: типы и примеры

В Java вложенные классы определяются внутри области действия другого класса. Они предоставляют возможность логически группировать связанные классы. В Java существует несколько типов вложенных классов, в том числе:

  1. Статические вложенные классы: они объявляются как статические внутри другого класса. Они связаны с внешним классом, а не с экземпляром внешнего класса.

  2. Внутренние классы. Также известные как нестатические вложенные классы, они объявляются без ключевого слова static. Внутренние классы имеют доступ к членам (полям и методам) внешнего класса, включая частные члены.

  3. Локальные классы: они определяются внутри блока или метода внешнего класса. Они доступны только внутри этого блока или метода.

  4. Анонимные классы. Это тип локального класса, у которого нет имени. Обычно они используются для реализации интерфейсов или расширения классов «на лету».

Вот пример того, как можно определить эти вложенные классы:

public class OuterClass {

    private int outerField;

    public void outerMethod() {
        // Code for outer method
    }
// Static nested class
    public static class StaticNestedClass {
        // Code for static nested class
    }
// Inner class
    public class InnerClass {
        // Code for inner class
    }

    public void someMethod() {
        // Local class
        class LocalClass {
            // Code for local class
        }
// Anonymous class
        Runnable anonymousClass = new Runnable() {
            public void run() {
                // Code for anonymous class
            }
        };
    }
}