Шаг 46.
Язык программирования Java.
Синтаксические правила для внутренних классов

На этом шаге мы рассмотрим синтаксические правила для внутренних классов

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

                                ВнешнийКласс.this

Например, во внутреннем классе TimerPrinter можно создать метод actionPerformed() следующим образом:

public void actionPerformed(ActionEvent e) {
    ...
    if (TalkingClock.this.beep) {
        Toolkit.getDefaultToolkit().beep();
    }
}

С другой стороны, конструктор внутреннего класса можно записать более явным образом, используя следующий синтаксис:

                ОбъектВнешнегоКласса.new ВнутреннийКласс(параметры)

Например, в приведенной ниже строке кода ссылка на внешний класс из вновь созданного объекта типа TimerPrinter получает ссылку this на метод, создающий объект внутреннего класса:

                ActionListener listener = this.new TimerPrinter();

Такой способ применяется чаще всего, хотя явное указание ссылки this здесь, как всегда излишне. Тем не менее это позволяет явно указать другой объект в ссылке на объект внешнего класса.

Следует иметь ввиду, что если ссылка на внутренний класс создается за пределами области действия внешнего класса, то она указывается следующим образом:

                           ВнешнийКласс.ВнутреннийКласс

На следующем шаге мы рассмотрим локальные внутренние классы

Предыдущий шаг Содержание Следующий шаг