Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Haulmont-презентации Java / Haulmont. java_se_3.2.ppt
Скачиваний:
29
Добавлен:
16.03.2015
Размер:
660.99 Кб
Скачать

Интерфейсы

Все права защищены. www.haulmont.ru info@haulmont.com

© HAULMONT, 2013

Цели занятия

2 Изучить:

•Понятие интерфейса

•Объявление интерфейса

• Константы в интерфейсах

•Методы в интерфейсах

•Модификаторы в объявлениях интерфейсов

•Расширение интерфейсов

•Наследование и сокрытие констант

•Наследование, переопределение и перегрузка методов

•Пустые интерфейсы

•Отличия абстрактного класса от интерфейса

Все права защищены. www.haulmont.ru info@haulmont.com

© HAULMONT, 2013

Понятие интерфейса

3• Интерфейс позволяет описать тип в абстрактной форме – в виде набора заголовков методов и

объявлений констант, которые образуют контракт типа

Интерфейс не содержит блоков реализации – его экземпляры создавать нельзя

Эта возможность предоставляется производным классам, которые способны реализовать один или несколько интерфейсов

Интерфейс – это образец чистой формы, а класс – сочетание формы (дизайна) и содержания (реализации)

Класс способен реализовать более одного интерфейса

Все права защищены. www.haulmont.ru info@haulmont.com

© HAULMONT, 2013

Понятие интерфейса

4Java допускает возможность множественного

наследования интерфейсов и единичного наследования реализации – классу позволено непосредственно

наследовать только один базовый класс

Все классы, которые расширяются конкретным классом, и все реализуемые им интерфейсы в совокупности называют базовыми типами

Новый класс – с точки зрения базовых типов – принято называть производный тип

Производный тип есть любой из унаследованных им базовых типов, поэтому ссылка на объект производного типа может быть полиморфным образом использована в любом контексте, где требуется ссылка на любой из базовых типов (класс или интерфейс)

Все права защищены. www.haulmont.ru info@haulmont.com

© HAULMONT, 2013

Понятие интерфейса

5• Объявление интерфейса создаёт новый тип точно так же, как и объявление класса

Наименование интерфейса можно употреблять

в качестве имени типа в объявлении любой переменной – и такой переменной допускается присваивать ссылки на объекты соответствующих производных типов

Интерфейсные типы, реализуемые классом, в его объявлении перечисляются после служебного слова implements (конструкция implements целиком размещается после предложения extends, если таковое имеется, но перед блоком тела класса)

Все права защищены. www.haulmont.ru info@haulmont.com

© HAULMONT, 2013

Примеры интерфейсов

6Cloneable. Объекты этого типа поддерживают операцию клонирования

Comparable. Объекты Comparable допускают упорядочение и поэтому могут сравниваться

Runnable. Соответствующие объекты содержат код, способный выполняться в виде независимого потока вычислений

Serializable. Объекты этого типа могут быть преобразованы в последовательность байтов с целью сохранения на носителях или переноса в среду другой виртуальной машины, а затем при необходимости восстановлены в исходном «живом» виде

Все права защищены. www.haulmont.ru info@haulmont.com

© HAULMONT, 2013

Примеры интерфейсов

7Пример 1

public interface Comparable { int compareTo(Object o);

}

Пример 2

class Body implements Comparable {

int orbitalDistance = …; // Задаётся в процессе конструирования

public int compareTo(Object o) { Body other = (Body)o;

if (orbits == other.orbits)

return orbitalDistance – other.orbitalDistance; else

throw new IllegalArgumentException("Неверное значение orbits");

}}

Все права защищены. www.haulmont.ru info@haulmont.com

© HAULMONT, 2013

Понятие интерфейса

8• Все указанные в объявлении интерфейсы называют базовыми интерфейсами класса

Класс обязан обеспечить реализацию всех методов, определённых в унаследованных базовых интерфейсах, иначе в его объявление следует включить модификатор abstract, имея в виду, что конкретной реализацией в будущем «займутся» какие-либо конкретные (неабстрактные) производные классы

Интерфейсы, как и классы, вводят в обиход новые наименования типов, которые могут быть использованы в объявлениях переменных:

Comparable obj;

Все права защищены. www.haulmont.ru info@haulmont.com

© HAULMONT, 2013

Понятие интерфейса

9• Посредством ссылки на интерфейсный тип, однако, разрешается обращаться только к членам соответствующего интерфейса

Пример 3

Comparable obj = new Body();

String name = obj.getName(); // Неверно

Если необходимо интерпретировать obj как объект класса Body, следует применить соответствующий оператор преобразования типов

Все права защищены. www.haulmont.ru info@haulmont.com

© HAULMONT, 2013

Понятие интерфейса

10• Существует, правда, единственное исключение из этого правила: ссылку на любой интерфейс позволяется трактовать

как ссылку на объект класса Object, поскольку Object – это базовый класс по отношению ко всем классам и интерфейсам

Поэтому следующее выражение вполне допустимо:

String desc = obj.toString();

Здесь ссылка на интерфейсный тип Comparable неявно преобразуется в ссылку на тип Object

Все права защищены. www.haulmont.ru info@haulmont.com

© HAULMONT, 2013

Соседние файлы в папке Haulmont-презентации Java