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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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. Для обращения к ним следует использовать точку после имени основного класса:

1
2
3
Computer computer = new Computer();
computer.i5.start();
computer.kingstone.start();

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

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

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

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

  • на Delphi

  • на Java

  • на C++