Оператор ABSTRACT
Оператор ABSTRACT
- создание абстрактного свойства.
Синтаксис
ABSTRACT [type [exclusionType]] [CHECKED] returnClassName(argClassName1, ..., argClassNameN)
Где exclusionType
бывает двух видов:
EXCLUSIVE
OVERRIDE [FIRST | LAST]
Описание
Оператор ABSTRACT
создает абстрактное свойство, реализации которого можно определять позже (например, в других модулях, зависящих от модуля, содержащего это ABSTRACT
свойство). Реализации добавляются к свойству с помощью инструкции +=
. При вычислении абстрактного свойства выбирается и вычисляется его подходящая реализация. Выбор подходящей реализации зависит от выполнения условий выбора, которые задаются при добавлении реализаций, и от типа оператора ABSTRACT
.
CASE
- общий случай, условие выбора будет явно задаваться в реализации с помощью блокаWHEN
.MULTI
- полиморфная форма, условием выбора будет являться принадлежность параметров сигнатуре реализации. Этот тип является типом по умолчанию, и может явно не задаваться.VALUE
- полиморфная форма, условием выбора будет являться определенность (отличие отNULL
) значения реализации (то есть по сути сама реализация).
Тип взаимоисключения оператора определяет, могут ли несколько условий реализаций абстрактного свойства одновременно выполняться при некотором наборе параметров. Тип EXCLUSIVE
указывает на то, что условия реализаций не могут одновременно выполняться. Тип OVERRIDE
допускает несколько одновременно выполняющихся условий, при этом то, какая из реализаций будет в итоге выбрана, определяется ключевыми словами FIRST
и LAST
.
Оператор ABSTRACT
нельзя использовать внутри выражений.