РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
74 of 1163 menu

Внутренний класс

Внутренний класс (inner class) - это класс, который объявляется внутри другого класса. Такой класс имеет доступ ко всем полям и методам внешнего класса, включая приватные, и позволяет логически группировать связанные классы. Для создания экземпляра внутреннего класса сначала нужен объект внешнего класса, так как внутренний класс привязан к его экземпляру.

Внутренние классы делятся на несколько видов: нестатические внутренние классы, статические вложенные классы, локальные классы и анонимные классы. В этой статье рассмотрим нестатический внутренний класс, который объявляется без ключевого слова static.

Синтаксис

class OuterClass { class InnerClass { // body of inner class } }

Создание экземпляра внутреннего класса:

OuterClass outer = new OuterClass(); OuterClass.InnerClass inner = outer.new InnerClass();

Пример

Давайте создадим внешний класс Outer с полем и внутренний класс Inner, который выводит значение этого поля:

public class Main { public static void main(String[] args) { Outer outer = new Outer(); Outer.Inner inner = outer.new Inner(); inner.show(); } } class Outer { private String message = "abcde"; class Inner { public void show() { System.out.println(message); } } }

Результат выполнения кода:

"abcde"

Пример

Внутренний класс может обращаться к приватному полю внешнего класса и изменять его. Давайте увеличим значение счётчика:

public class Main { public static void main(String[] args) { Counter counter = new Counter(); Counter.Incrementer inc = counter.new Incrementer(); inc.increment(); inc.increment(); System.out.println(counter.getValue()); } } class Counter { private int count = 0; public int getValue() { return count; } class Incrementer { public void increment() { count++; } } }

Результат выполнения кода:

2

Пример

Внутренний класс может быть создан внутри метода внешнего класса. Давайте посмотрим на пример с локальным внутренним классом:

public class Main { public static void main(String[] args) { Outer outer = new Outer(); outer.run(); } } class Outer { public void run() { class Local { public void print() { System.out.println("12345"); } } Local local = new Local(); local.print(); } }

Результат выполнения кода:

"12345"

Смотрите также

  • класс static nested,
    который является статическим вложенным классом
  • класс anonymous,
    который является анонимным классом
  • класс local class,
    который объявляется внутри метода
  • ключевое слово static,
    которое делает вложенный класс статическим
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить