На этом шаге мы рассмотрим синтаксические правила для внутренних классов
Как было сказано на предыдущем шаге, внутренний класс содержит ссылку на объект внешнего класса. Синтаксис у этой ссылки следующий:
ВнешнийКласс.this
Например, во внутреннем классе TimerPrinter можно создать метод actionPerformed() следующим образом:
public void actionPerformed(ActionEvent e) { ... if (TalkingClock.this.beep) { Toolkit.getDefaultToolkit().beep(); } }
С другой стороны, конструктор внутреннего класса можно записать более явным образом, используя следующий синтаксис:
ОбъектВнешнегоКласса.new ВнутреннийКласс(параметры)
Например, в приведенной ниже строке кода ссылка на внешний класс из вновь созданного объекта типа TimerPrinter получает ссылку this на метод, создающий объект внутреннего класса:
ActionListener listener = this.new TimerPrinter();
Такой способ применяется чаще всего, хотя явное указание ссылки this здесь, как всегда излишне. Тем не менее это позволяет явно указать другой объект в ссылке на объект внешнего класса.
Следует иметь ввиду, что если ссылка на внутренний класс создается за пределами области действия внешнего класса, то она указывается следующим образом:
ВнешнийКласс.ВнутреннийКласс
На следующем шаге мы рассмотрим локальные внутренние классы