Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекции Java / 04. Исключительные ситуации и их обработка. Наследование и его особенности.pptx

.pdf
Скачиваний:
137
Добавлен:
16.03.2015
Размер:
217.8 Кб
Скачать

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

nАбстрактные методы описывают сигнатуру без реализации

abstract public int getValue();

nКласс с абстрактными методами обязан быть абстрактным

abstract class MyClass {...}

nРасширяющий класс может перекрыть своими абстрактными родительские реализованные методы

nАбстрактный класс не обязан иметь абстрактные методы

nСоздавать объекты абстрактных типов нельзя!

Самарский государственный аэрокосмический университет имени академика С.П. Королёва

41

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

nПозволяет описать тип в полностью абстрактной форме

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

nРеализация классом интерфейса означает согласие класса на внешний контракт, описываемый реализуемым интерфейсом

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

Самарский государственный аэрокосмический университет имени академика С.П. Королёва

42

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

interface Somethingable {

//константы

//методы

//вложенные классы и интерфейсы

}

nВсе члены интерфейса по умолчанию обладают признаком public

nПрименение других модификаторов редко имеет смысл

nБывают пустые интерфейсы

Самарский государственный аэрокосмический университет имени академика С.П. Королёва

43

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

interface Verbose { int SILENT = 0; int TERSE = 1; int NORMAL = 2; int VERBOSE = 3;

}

nИмеют неявные модификаторы public static final

nДолжны быть снабжены инициализаторами

Самарский государственный аэрокосмический университет имени академика С.П. Королёва

44

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

interface Verbose {

void setVerbosity(int level); int getVerbosity();

}

nИмеют неявные модификаторы public abstract

nНе могут иметь модификаторов native synchronized strictfp static final

Самарский государственный аэрокосмический университет имени академика С.П. Королёва

45

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

interface NewVerbose extends Verbose, Runnable { // ...

}

nДопускается сокрытие констант

nПереопределение метода не несет семантической нагрузки

nСовпадение имен наследуемых методов не несет семантической нагрузки

Самарский государственный аэрокосмический университет имени академика С.П. Королёва

46

Реализация интерфейсов классами

class MyNewThread extends MyThread

implements Runnable, Verbose {

...

}

nИнтерфейсы реализуются классами

nКласс может реализовывать несколько интерфейсов

nЕсли класс не реализует все методы «наследуемых» интерфейсов, он является абстрактным

Самарский государственный аэрокосмический университет имени академика С.П. Королёва

47

Интерфейс или абстрактный класс?

nИнтерфейсы обеспечивают инструментарий безопасного множественного наследования, производный класс способен наследовать одновременно несколько интерфейсов

nКласс может расширять единственный базовый класс, даже если тот содержит только абстрактные методы

Самарский государственный аэрокосмический университет имени академика С.П. Королёва

48

Интерфейс или абстрактный класс?

nАбстрактный класс частично может быть реализован, он вправе содержать члены, помеченные как protected и/или static и т.п.

nСтруктура интерфейса ограничена объявлениями public-констант и public-методов без какой бы то ни было реализации

Самарский государственный аэрокосмический университет имени академика С.П. Королёва

49

Ссылки интерфейсных типов

nДопускаются ссылки интерфейсных типов

nТакая ссылка позволяет выполнять над объектом операции, описанные во

внешнем контракте, обусловленном типом интерфейса

nТакое средство существенно расширяет возможности полиморфизма и полиморфного принципа открытости/ закрытости

Самарский государственный аэрокосмический университет имени академика С.П. Королёва

50