Перейти к основному содержимому
Версия: 5.x

Классы

Базовым элементом в lsFusion является объект. Каждый объект является экземпляром некоторого класса, который определяет качества, присущие всем объектам-экземплярам данного класса. Классы в свою очередь можно разделить на встроенные классы, отвечающие за примитивные типы данных, и пользовательские классы.

Наследование

Классы могут наследоваться друг от друга. При наследовании класса B от класса A будем называть класс A - предком, а класс B - потомком.

Смысл наследования заключается в следующем: если класс B наследуется от класса A, то все экземпляры класса B будут обладать всеми качествами класса A. Таким образом с учетом наследования получаем, что каждый класс определяет качества, присущие не только всем объектам - экземплярам этого класса, но также и всем объектам - экземплярам потомков этого класса.

Будем говорить, что объект принадлежат классу A, если этот объект является либо экземпляром класса A, либо экземпляром некоторого потомка класса A.

Для реализации полиморфизма наследование, как правило, используется вместе с механизмами расширения свойств и действий.

Ограничения классов

У механизма классов существует ряд ограничений:

  1. Принадлежность классу не может вычисляться (только задаваться явно при добавлении и изменении класса объекта).
  2. Класс определяется только для одного объекта (а не для набора объектов).
  3. Невозможно несколько раз наследовать один и тот же класс.

Соответственно, если механизма классов недостаточно, в платформе также поддерживается механизм агрегаций, который вместе с наследованием позволяет реализовывать практически любую полиморфную логику.