Объекты создаются с помощью специальных методов, называемых конструкторами.
Конструктор представляет собой функцию, создающую объект в
динамической памяти, инициализирующую его поля и возвращающую ссылку на
созданный объект. Эта ссылка обычно сразу присваивается переменной
типа класс. При описании конструктора вместо ключевого слова
function используется ключевое слово
constructor. Кроме того, для конструктора не
указывается тип возвращаемого значения.
Например:
type
Person = class
private
nm: string;
ag: integer;
public
constructor Create(name: string; age: integer);
end;
...
constructor Person.Create(name: string; age: integer);
begin
nm := name;
ag := age;
end;
В PascalABC.NET конструктор
всегда должен иметь имя Create. При описании
конструктора внутри класса можно опускать его имя:
type
Person = class
constructor (name: string; age: integer);
begin
nm := name;
ag := age;
end;
end;
В силу особенностей реализации вызовов конструкторов в .NET в PascalABC.NET всегда создается конструктор без параметров (независимо от того, определен ли другой конструктор). Этот конструктор инициализирует все поля нулевыми значениями (строковые поля - пустыми строками, логические - значением False).
Для вызова конструктора можно использовать два способа.
1 способ. В стиле Object Pascal.
Для вызова конструктора следует указать имя класса, за которым следует точка-разделитель, имя конструктора и список параметров. Например:
var p: Person;
p := Person.Create('Иванов',20);
2 способ. С помощью операции new - в
стиле C# (предпочтительный).
var p: Person;
p := new Person('Иванов',20);
Деструктор в Object Pascal -
специальная процедура, уничтожающая объект и
освобождающая динамическую память, которую этот объект
занимал. При описании деструктора вместо служебного слова procedure
используется служебное слово destructor.
Например:
destructor Destroy;
begin
...
end;
Поскольку в PascalABC.NET память управляется сборщиком мусора, деструктор в PascalABC.NET не играет никакой роли и представляет собой обычную процедуру-метод.