Другие языки программирования и технологии

Какой смысл в разбиении класса на интерфейс и реализацию?

Покровская 23
Покровская 23
1 530
Если класс только один и не предполагается, что появятся другие классы реализующие данный интерфейс, то нет смысла создавать интерфейс.
Смысл в полиморфизме. Код может работать с объектами разных классов используя один интерфейс. Например, можно написать процедуру, обрабатывающую данные считываемые из потока ввода-вывода. Эту процедуру можно будет применять и для файла на диске, и для данных в памяти, и для данных получаемых по сети, если есть классы, реализующие интерфейс потока для каждого варианта. В Java InputStream является абстрактным классом, а не интерфейсом, но это не важно в данном случае.

> Можно ли назвать интерфейс в Java аналогом заголовочного файла (.h) в C++?
Нет. Аналог интерфейса в C++ – полностью абстрактный класс (содержащий только абстрактные методы).

Плохо, что отключены комментарии.
Владислав Герасимов
Владислав Герасимов
58 065
Лучший ответ
Интерфейсы - особенность создания операционной системы windows, ядра операционной системы, управления процессами в операционной системе. На основе COM были реализованы технологии: Microsoft OLE Automation, ActiveX, DCOM, COM+, DirectX, а также XPCOM. Стандарт COM был разработан в 1993 году корпорацией Microsoft как основа для развития технологии OLE. Технология OLE 1.0 уже позволяла создавать т. н. «составные документы» (англ. compound documents): например, в пакете Microsoft Office эта технология позволяла включать диаграммы Microsoft Excel в документы Microsoft Word. Использование интерфейсов — один из вариантов обеспечения полиморфизма. IUnknown, от которого наследуются интерфейсы имеет следующие методы: AddRef, QueryInterface, Release. Реализовано оно на основе указателей типа void, то есть для независимости от типа объекта. На платформе .NET практически все классы наследуются от Object. А в Visual Basic переменные типа Variant
Dima Lwowytsch
Dima Lwowytsch
42 166