Java. Урок 26. Анонимные и вложенные классы

Уроки для начинающих   1 февраля 2013  Автор статьи:  

В данном уроке мы еще больше приблизимся к пониманию основ ООП. Класс, который находится внутри другого класса, называется вложенным. Для чего это может быть нужно? Вкладывая один класс в другой вы можете показывать отношение агрегации. Например у нас есть компьютер, который состоит из процессора и оперативной памяти:

public class Computer {
class Processor {
private boolean isStart = false;

public void start() {
isStart = true;
}

public void shutdown() {
isStart = false;
}

}

class RAM {
private boolean isStart = false;

public void start() {
isStart = true;
}

public void shutdown() {
isStart = false;
}
}

Processor i5 = new Processor();//экземпляр процессора
RAM kingstone = new RAM();//экземпляр оперативной памяти
}

Так как компьютер действительно состоит из оперативной памяти и процессора, то оба этих классах находятся внутри класса компьютер, при этом мы создали экземпляры Proccessor и RAM. Для обращения к ним следует использовать точку после имени основного класса:

Computer computer = new Computer();
computer.i5.start();
computer.kingstone.start();

Кроме того, что класс можно объявить внутри фигурных скобок основного класса, его можно написать внутри метода, тогда он будет виден только в нем.
Одним из примеров таких классов могут служить анонимные классы. Анонимный класс — это класс, не имеющий имени. Он применяется только если нужно создать такой класс, который будет применяться один раз в программе. Хорошим примером такого класса может служить какой — нить обработчик события.
Для того, чтобы создать объект анонимного класса необходимо вызвать конструктор его суперкласса, а затем в фигурных скобках переопределить методы и поля, которые необходимы для него.
Допустим у вас на работе появился один супер компьютер. Он такой один и таких скорей всего больше не будет, тогда можно создать его как анонимный класс:

new Computer(){
void superStart(){//новый метод
this.i5.start();
this.kingstone.start();
}
};

Более подробно об использовании и применении анонимных классов мы поговорим позднее.

Научиться программировать

  • на Delphi

  • на Java

  • на C++