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

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

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();
    }
};

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

Категория: Java | Добавил: ghost_mod (29.09.2016)
Просмотров: 538 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email:
Подписка:1
Код *: