Основы объектно-ориентированного программирования. Стесик О.Л. - 28 стр.

UptoLike

Составители: 

54
[public] interface ИмяНовогоИнтерфейса [extends списо-
кИнтерфейсов]
Тело интерфейса, состоящее из описаний абстрактных методов и
статических именованных констант, заключается в фигурные скобки и
следует за заголовком класса.
Обязательными элементами в заголовке интерфейса являются клю-
чевое слово interface и ИмяНовогоИнтерфейсаидентификатор,
однозначно определяющий новый тип данных, описываемый этим
интерфейсом. Декларация «extends списокИнтерфейсов»
указывает
на интерфейсы, методы и константы которых автоматически включа-
ются в описываемый интерфейс.
Для интерфейса верхнего уровня (то есть, не являющегося членом
другого класса или интерфейса) смысл имеет только модификатор
доступа public,при его отсутствии интерфейс получает пакетный
уровень доступа.
Тело интерфейса состоит из описаний абстрактных методов и име-
нованных статических
констант. Все элементы интерфейса автомати-
чески получают публичный уровень доступа. Таким образом, все ме-
тоды интерфейса снабжаются модификаторами public и
abstract,а все переменные - модификаторами public, static
и final. Эти модификаторы при описании интерфейса обычно
опускаются.
7.4 Приведение производных типов
Невозможно создать объект типа интерфейса с помощью оператора
new, НО, так как каждый интерфейс, как и класс, определяет произ-
водный тип, тип ссылки на объект может быть приведен к типу ин-
терфейса, имплементированного классом объекта. При этом из объек-
та как бы «вырезается» часть, описанная интерфейсомметоды поро-
ждающего класса, не
входящие в интерфейс, становятся недоступны.
Таким образом, интерфейсы существенно расширяют множество
55
типов, к которому может быть приведен объект. Иногда даже говорят,
что интерфейсы в Java реализуют множественное наследование. В
действительности, они лишь имитируют его.
Итак, ссылка на объект любого класса может быть приведена:
9 к типу любого из классов иерархии наследования вплоть до
класса java.lang.Object
9 к типу любого из интерфейсов, имплементируемых классом и
его родительскими классами
9 к типу любого интерфейса, родительского по отношению к
имплементируемым всей иерархией наследования.
Все это множество типов называется типами, совместимыми с ти-
пом, заданным классом. Попытка выполнить приведение к типу, не
попадающему в группу совместимых, является ошибкой, которая не
всегда может быть выявлена на стадии компиляции программы.
Встроенная операция instanceof проверяет, является ли указанный
объект экземпляром указанного класса, то есть, допустимо ли преоб-
разование типа ссылки к типу указанного класса. Оператор возвращает
значение логического типа и позволяет избегать ошибок времени ис-
полнения, связанных с попытками выполнить недопустимое преобра-
зование типа:
public int compareTo(Object other){
if(other instanceof MyClass) {
MyClass m=(MyClass) other;
. . . . . . . . . . . . . . . . .
7.5 Применение интерфейсов
Имплементация интерфейсов позволяет наделять классы свойства-
ми, которые нужны для представления объектов класса в новом каче-
стве. Так, например, имплементация интерфейса java.lang.Runnable
позволяет создать на основе объекта этого класса отдельный легковес-
ный процессновый поток исполнения. Интерфейс
java.lang.Comparable позволяет сортировать объекты имплементирую-
щего класса и хранить их в упорядоченных наборах.
Интерфейсы могут
маскировать реализующий класс там, где осо-