logo
Проектирование инт-прил / лекции / Проектирование инет приложений

Интерфейсы

Интерфейс - это коллекция методов и свойств, которые сгруппированы в одном месте для реализации конкретной функциональности. После определения интерфейса его можно реализовать в классе. Интерфейсы не существуют сами по себе, "создать экземпляр интерфейса", как это делается для класса - нельзя. Кроме того, интерфейсы не могут содержать код с реализацией функционала, они только описывают определенный набор действий. Этот код будет содержаться в классах, которые реализуют данный интерфейс. Интерфейс - это некий "договор", который обязуется исполнять реализующий его класс. Пример объявления интерфейса:

public interface Moveable {

void moveRight();

void moveLeft();

void moveUp();

void moveDown();

}

Все описанные в интерфейсе методы имеют модификаторы public abstract, которые указывать, как правило, не обязательно. Один класс может реализовывать несколько интерфейсов, а один интерфейс может быть реализован несколькими классами. Интерфейс можно использовать двумя способами:

В некоторых языках с развитой объектной структурой, с возможностью наследования одновременно от нескольких классов - например в C++ - понятия "интерфейса" не существует. Их роль играют абстрактные классы. Суть от этого не меняется, мы по-прежнему говорим о некоем наборе правил, от которого не может быть порожден объект напрямую. Выше приведенный интерфейс в стиле C++ будет выглядеть примерно следующим образом:

#ifndef INTERFACE_MOVEABLE_HPP

#define INTERFACE_MOVEABLE_HPP

class Moveable{

public:

// Деструктор. В данном случае он обязан быть, и обязан

// быть виртуальным.

virtual ~Moveable (){}

virtual void moveRight() = 0;

virtual void moveLeft() = 0;

virtual void moveUp() = 0;

virtual void moveDown() = 0;

};

#endif