// Иллюстрация использования статических (классовых) конструкторов type Person = class private class arr: array of Person; // Классовое поле. Связано не с переменной класса, а с классом. name: string; age: integer; public class constructor; // Конструктор класса. Вызывается до создания первого объекта класса и до вызова любого классового метода begin writeln(' Вызван классовый конструктор'); SetLength(arr,3); arr[0] := new Person('Иванов',20); arr[1] := new Person('Петрова',19); arr[2] := new Person('Попов',35); end; constructor (n: string; a: integer); begin name := n; age := a; end; function ToString: string; override; begin Result := Format('Имя: {0} Возраст: {1}',name,age); end; class function RandomPerson: Person; // Классовый метод. Может обращаться только к классовым полям begin Result := arr[Random(3)]; end; end; begin writeln('Случайные персоны'); for var i:=1 to 5 do writeln(Person.RandomPerson); // Вызов классового метода end.