Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Богомазов шпоры.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.32 Mб
Скачать

Класс Class

Класс Class является метаклассом для всех классов Java. Его объекты хранят информацию про другие классы, ( в учереждении-это инструкция, которая описывает инструкции). Для каждого нового класса создается объект этого класса. Объект создается при загрузкие класса Ххх.class. В объекте этого класса хранятся методы, и статические поля для класса Ххх.

Абстрактные классы и методы

Класс Instrument создавался для определения общего интерфейса всех производных классов. Этот интерфейс и определяет общность всех производных классов.

Абстрактный метод - метод который не имеет тела, есть только объявление.

abstract void f();

Класс с абстрактными методами – абстрактный класс.

abstract Instrument {…}

Класс, где есть хотя бы один абстрактный метод называется абстрактным.

В производном классе нужно переопределить все абстрактные методы, или он останется абстрактным. Создание экземпляров абстрактного класса запрещено, но можно делать upcasting к типу абстрактного класса. То есть можно описывать переменные абстрактного класса и присваивать им ссылки на неабстрактных потомков. При этом всегда применяется upcasting.

Например

Shape s = new Circle ();

Абстрактный класс –заготовка, часть методов реализовано, часть-нет.

Интерфейсы

Интерфейс – вид класса (абстрактного), где все методы абстрактны (полностью абстрактные классы). Интерфейс может содержать константы (поля static final). Интерфейс не может содержать реализации, не может иметь тело.

interface Instrument {

void play (Note n); //public

void adjust (); //public

int VALUE = 5; //public static final

}

Классы реализуют (implements) интерфейс. При реализации интерфейса его методы должны быть public. Интерфейс говорит – этот класс «ведет себя как» make-a.

- один класс может реализовать много интерфейсов и к любому из них можно сделать upcasting;

- интерфейсы могут наследоваться;

- интерфейс может быть построен на основе других интерфейсов.

Внутренние классы Вложенные классы (Inner)

Можно создавать классы внутри других классов – вложенные классы. Они могут работать со всеми членами внешнего класса.

Внутренний класс может обращаться ко всем полям и методам внешнего.

Зачем нужны внутренние классы???

Обычно внутренний класс реализует интерфейс или наследует от какого – либо класса. А его код имеет доступ к членам внешнего класса.

Почему не реализовать интерфейс внешним классом?

  1. Проектирование. Внутренний класс не обязан реализовывать отношение is – a. (Sequence не является Selector). Кроме того, можно создать еще один внутренний класс Selector, для перебора, например, в обратном направлении (метод reverceSelector () его вернет).

Это дает гибкость-несколько внутренних классов, реализующих один интерфейс.

  1. Можно наследовать от нескольких классов: внешний класс от одного, внутренний – от другого (множественное наследование реализации). То есть наследование от многих не интерфейсов, а классов.

  2. Можно создать несколько экземпляров внутреннего класса (Selector), которые будут работать одновременно.