Конструкторы класса
Конструктор класса — это специальный метод, который создаёт экземпляр класса. Хорошей практикой считается указание области видимости конструктора как public, что позволяет другим частям приложения создавать экземпляры этого класса.
Класс может иметь более одного конструктора, при этом каждый из них имеет разный список параметров. Это полезно, когда необходимо создавать экземпляры для разных частей приложения. Например, у нас есть конструктор класса Customer, который не принимает входные параметры. В этом случае создаётся «пустой» экземпляр Customer, и другая часть приложения инициализирует атрибуты этого экземпляра. Также у нас есть конструктор, который принимает значения параметров для экземпляра Customer в момент создания. Когда конструктор запускается, он заполняет атрибуты создаваемого экземпляра полученными входными значениями.
Класс должен содержать хотя бы один конструктор. Синтаксис для определения конструктора следующий:
constructor <visibility> <class-name> ([input <parameter> as <type-name>][,…]): <body of constructor> end constructor.
visibility
Область видимости конструктора: public, private, protected.
class-name
Имя класса.
parameter
Имя параметра, значение которого будет использовано для инициализации экземпляра класса.
type-name
Одни из встроенных или пользовательских типов данных.
body of constructor
ABL-код, необходимый для реализации функциональности конструктора.
Для генерации кода конструктора вы можете использовать мастер New Constructor. Для этого щёлкните правой кнопкой мыши на строке, где необходимо добавить конструктор, и выберите пункт Source -> Add Constructor. Если конструктору необходимы параметры, то вы можете вручную добавить их в описание.
Существует два общепринятых шаблона для проектирования конструкторов:
- Использование конструктора без аргументов и затем использование общедоступного метода для инициализации атрибутов экземпляра.
- Использование конструктора с параметрами и использование параметров для инициализации атрибутов экземпляра в теле конструктора.
Примечание. Если вы используете мастер Add Constructor для генерации конструктора, то первым сгенерированным оператором будет вызов super(). Это значит, что конструктор для суперкласса будет вызван первым. Рекомендуется сохранять этот оператор в конструкторе, даже если вы не определили суперкласс.