Работа с интерфейсами
Библиотека предоставляет аннотацию &Реализует
, которая позволяет указать, что класс должен реализовать указанный интерфейс. Интерфейс должен быть представлен классом, имя которого и указывается в аннотации.
Для семантического обозначения интерфейсов рекомендуется использовать аннотацию &Интерфейс
на конструкторе класса-интерфейса.
&Интерфейс
Процедура ПриСозданииОбъекта()
КонецПроцедуры
Процедура МойМетод() Экспорт
КонецПроцедуры
Процедура МойМетод()
Сообщить("Реализация метода");
КонецПроцедуры
&Реализует("МойИнтерфейс")
Процедура ПриСозданииОбъекта()
КонецПроцедуры
Проверка реализации интерфейса осуществляется с помощью класса ВалидаторРеализации
. В валидатор можно передавать как сам объект, который необходимо проверить, так и его тип.
#Использовать extends
ВалидаторРеализации = Новый ВалидаторРеализации();
ВалидаторРеализации.ИнтерфейсыРеализованыКорректно(Тип("МойКласс"));
В случае, если класс не реализует все методы интерфейса, будет выброшено исключение. Под реализацией подразумевается наличие всех методов интерфейса с совпадающим количеством параметров метода.
Класс может объявлять, что он реализует несколько интерфейсов, повторяя аннотацию &Реализует
для каждого интерфейса.
&Реализует("МойИнтерфейс")
&Реализует("МойДругойИнтерфейс")
Процедура ПриСозданииОбъекта()
КонецПроцедуры
Расширение интерфейсов
Интерфейсы могут расширять другие интерфейсы через аннотацию &Расширяет
, что обеспечивает наследование интерфейсов. Когда класс реализует интерфейс, он должен также реализовать все методы интерфейсов, которые этот интерфейс расширяет.
&Интерфейс
Процедура ПриСозданииОбъекта()
КонецПроцедуры
Процедура БазовыйМетод() Экспорт
КонецПроцедуры
&Интерфейс
&Расширяет("БазовыйИнтерфейс")
Процедура ПриСозданииОбъекта()
КонецПроцедуры
Процедура ДополнительныйМетод() Экспорт
КонецПроцедуры
Процедура БазовыйМетод()
Сообщить("Реализация базового метода");
КонецПроцедуры
Процедура ДополнительныйМетод()
Сообщить("Реализация дополнительного метода");
КонецПроцедуры
&Реализует("РасширенныйИнтерфейс")
Процедура ПриСозданииОбъекта()
КонецПроцедуры
Класс МойКласс
объявляет, что он реализует интерфейс РасширенныйИнтерфейс
и должен содержать как метод ДополнительныйМетод
, так и унаследованный метод БазовыйМетод
из БазовыйИнтерфейс
.