Классы
Базовым элементом в lsFusion является объект. Каждый объект является экземпляром некоторого класса, который определяет качества, присущие всем объектам-экземплярам данного класса. Классы в свою очередь можно разделить на встроенные классы, отвечающие за примитивные типы данных, и пользовательские классы.
Наследование
Классы могут наследоваться друг от друга. При наследовании класса B
от класса A
будем называть класс A
- предком, а класс B
- потомком.
Смысл наследования заключается в следующем: если класс B
наследуется от класса A
, то все экземпляры класса B
будут обладать всеми качествами класса A
. Таким образом с учетом наследования получаем, что каждый класс определяет качества, присущие не только всем объектам - экземплярам этого класса, но также и всем объектам - экземплярам потомков этого класса.
Будем говорить, что объект принадлежат классу A
, если этот объект является либо экземпляром класса A
, либо экземпляром некоторого потомка класса A
.
Для реализации полиморфизма наследование, как правило, используется вместе с механизмами расширения свойств и действий.
Ограничения классов
У механизма классов существует ряд ограничений:
- Принадлежность классу не может вычисляться (только задаваться явно при добавлении и изменении класса объекта).
- Класс определяется только для одного объекта (а не для набора объектов).
- Невозможно несколько раз наследовать один и тот же класс.
Соответственно, если механизма классов недостаточно, в платформе также поддерживается механизм агрегаций, который вместе с наследованием позволяет реализовывать практически любую полиморфную логику.