Книга: Описание языка PascalABC.NET
Конструкторы
Конструкторы
Объекты создаются с помощью специальных методов, называемых конструкторами.
Конструктор представляет собой функцию, создающую объект в динамической памяти, инициализирующую его поля и возвращающую указатель на созданный объект. Этот указатель обычно сразу присваивается переменной типа класс. При описании конструктора вместо служебного слова 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 не играет никакой роли и представляет собой обычную процедуру-метод.
- Обзор классов и объектов
- Видимость членов класса и модификаторы доступа
- Методы
- Инициализаторы полей
- Конструкторы
- Предварительное объявление классов
- Переменная Self
- Свойства
- Индексные свойства
- Наследование
- Переопределение методов
- Наследование конструкторов
- Виртуальные методы и полиморфизм
- Абстрактные методы
- Перегрузка операций
- Классовые поля, методы и конструкторы
- Методы расширения
- Анонимные классы
- Автоклассы
- ГЛАВА 3 Выдающиеся конструкторы
- Наследование и конструкторы
- Конструкторы по умолчанию
- Блез Паскаль и Вильгельм Шиккард Первые конструкторы механических калькуляторов
- 9.2. Классы и конструкторы
- 9.2.1. Конструкторы и идентификация класса
- Статические конструкторы
- Конструкторы и наследование
- Конструкторы проверяемых заданий: обзор
- 7.6. Конструкторы
- Классовые поля, методы и конструкторы
- Модули констукторов заданий