pascalabcnet/InstallerSamples/LanguageFeatures/ClassConstructor.pas

36 lines
1.4 KiB
ObjectPascal
Raw Permalink Normal View History

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