- •Интерфейсы
- •Цели занятия
- •Понятие интерфейса
- •Понятие интерфейса
- •Понятие интерфейса
- •Примеры интерфейсов
- •Примеры интерфейсов
- •Понятие интерфейса
- •Понятие интерфейса
- •Понятие интерфейса
- •Объявление интерфейса
- •Константы в интерфейсах
- •Константы в интерфейсах
- •Методы в интерфейсах
- •Наследование и сокрытие
- •Наследование и сокрытие
- •Наследование и сокрытие
- •Наследование и сокрытие
- •Наследование и сокрытие
- •Наследование, переопределение
- •Наследование, переопределение
- •Пустые интерфейсы
- •Абстрактный класс или
- •Литература
Наследование и сокрытие
констант
21• Продолжим пример, касающийся интерфейсов X и Y, и предположим, что объявлены ещё два
интерфейса: interface C {
String val = "Интерфейс C";
}
interface D extends X, C {}
•Что теперь может означать выражение D.val
– обращение к целочисленной константе val
или строковому литералу val?
•В подобных случаях мы обязаны явно оговаривать свои намерения – достаточно написать X.val или С.val
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |
Наследование, переопределение
и перегрузка методов
22• Производный интерфейс наследует все методы базовых интерфейсов
•Если метод, объявленный в производном интерфейсе, обладает теми же сигнатурой и типом возвращаемого значения, что и унаследованный метод, новое объявление переопределяет любое и все аналогичные объявления унаследованных методов
•Как и при переопределении методов в процессе расширения класса, методу, переопределённому при наследовании интерфейса, не позволяется декларировать больше объявленных исключений, чем предусмотрено в исходном объявлении соответствующего метода
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |
Наследование, переопределение
и перегрузка методов
23• Если в составе интерфейса объявлен метод с тем же именем, но иным списком параметров, нежели в унаследованном интерфейсе, имеет место перегрузка
метода
•Класс, реализующий интерфейс, должен предоставить конкретные варианты кода для каждой из перегруженных форм метода
•Если объявленный в интерфейсе метод отличается от унаследованного только типом возвращаемого значения, при компиляции будет выдано сообщение об
ошибке
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |
Пустые интерфейсы
24• Некоторые интерфейсы не содержат объявлений каких-либо методов, а просто обозначают некоторое свойство или общий признак принадлежности будущих классов к некоторой группе
•Примером такого интерфейса – их принято называть
пустыми, или интерфейсами-маркерами – может служить Cloneable, в составе которого отсутствуют объявления каких бы то ни было методов и констант
•Интерфейс Cloneable, будучи реализованным в классе, относит этот класс к числу тех, в которых поддерживается механизм клонирования
•К числу интерфейсов-маркеров, помимо упомянутого Cloneable, относится также интерфейс Serializable
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |
Абстрактный класс или
интерфейс?
25 Существует два главных различия между интерфейсами и абстрактными классами:
•Интерфейсы обеспечивают инструментарий
множественного наследования, производный класс способен наследовать одновременно несколько интерфейсов. Класс может расширять
единственный базовый класс, даже если тот содержит только абстрактные методы
•Абстрактный класс частично может быть реализован, он вправе содержать члены, помеченные как protected, и/или static и т.п. Структура интерфейса ограничена объявлениями public-констант и public-методов
без какой бы то ни было реализации
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |
Литература
26• Арнольд Кен, Гослинг Джеймс, Холмс Дэвид. Язык программирования Java. 3-е изд.: Пер. с
англ. – М.: Издательский дом «Вильямс», 2001. –
624с.: ил. ISBN 5-8459-0215-0 (рус.).
•Хорстманн Кей С., Корнелл Гари. Java`2. Библиотека профессионала, том 1. Основы. 8-е издание.: Пер. с англ. – М.: ООО «И.Д. Вильямс», 2008. – 816 с.: ил. ISBN 978-5-8459-1378-4 (рус.).
•Гаврилов А.В., Дегтярёва О.А., Лёзин И.А., Лёзина И.В. Учебное пособие по языку Java. Часть 1. Самара: Издательство СНЦ РАН, 2010. –
176с. - ISBN 978-5-93424-508-6
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |