Расширение интерфейсов интерфейсами
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

interface NewVerbose extends Verbose, Runnable {

// ...

}

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

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

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

 

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

Class MyNewThread

extends MyThread

implements Runnable, Verbose {

...

}

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

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

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

 

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

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

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

 

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

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

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

 

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

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

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

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

 

Использование типов

n Ссылочные типы

n Неявное приведение

n Явное приведение

 

MyNewThread mnt = new MyNewThread();

MyThread mt = mnt;

Runnable r1 = mnt;

Runnable r2 = mt; // Ошибка!!!

mnt = ( MyNewThread ) mt ; // Возможен выброс исключения

mnt = (MyNewThread)r1; // ClassCastException

 

 

Вопрос 44 Потоки данных, классификация. Базовые типы и их функциональность. 2-3,5-9, 11. Лекция Механизмы ввода-вывода информации. Понятие сериализации.

 

Традиционно, проблемы!

n Система ввода/вывода не должна зависеть от платформы!

n Применяется модель потоков данных:

l упорядоченная последовательность данных,

l которой соответствует определенный источник (потоки ввода) или получатель (потоки вывода)

 

 

Разновидности потоков

 

 

Класс InputStream

n abstract int read() throws IOException

n int read(byte[] b, int off, int len) throws IOException

n int read(byte[] b) throws IOException

n long skip(long n) throws IOException

n int available()  throws IOException

n void close()  throws IOException

 

Класс OutputStream

n abstract void write(int b) throws IOException

n void write(byte[] b, int off, int len) throws IOException

n void write(byte[] b) throws IOException

n void flush() throws IOException

n void close()  throws IOException

 

Класс Reader

n int read() throws IOException

n abstract int read(char[] b, int off, int len) throws IOException

n int read(char[] b) throws IOException

n long skip(long n) throws IOException

n boolean ready ()  throws IOException

n abstract void close() throws IOException

 

Класс Writer

n void write(int ch) throws IOException

n abstract void write(char[] b, int off, int len) throws IOException

n void write(char[] b) throws IOException

n void write(String str, int off, int len) throws IOException

n void write(String str) throws IOException

n abstract void flush() throws IOException

n abstract void close() throws IOException

 

Дата: 2019-07-30, просмотров: 189.