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