Глава 6 Классы

На верх  Назад  Вперёд

В подходе Delphi к объектно-ориентированному программированию, все вращается вокруг концепции «классов». Класс может рассматриваться как указатель на объект, или как указатель на запись со связанными с ним методами.

Главная разница между объектами и классами в том, что объект будет помещен в стек, как и обычная запись, а класс всегда размещается в куче. В следующем примере:

Var

A : TSomeObject; // Объект

B : TSomeClass; // Класс

Главное отличие в том, что переменная A будет занимать столько же места в стеке, сколько занимает объект (TSomeObject). С другой стороны, переменная B всегда будет иметь размер всего лишь указателя на стек. Фактические данные класса располагаются в куче.

Из этого следует еще одно отличие: класс нужно всегда инициализировать с помощью своего конструктора, тогда как для объекта такой необходимости нет. Вызов конструктора выделяет в куче необходимое количество памяти для данных экземпляра класса.

Примечание:

В предыдущих версиях Free Pascal, при использовании классов было необходимо выставлять в объявлениях модулей uses objpas; Начиная с версии 0.99.12 этого делать уже не нужно. С этой версии модуль objpas будет загружаться автоматически, если используются опции ‑MObjfpc или ‑MDelphi, или в коде явно указаны соответствующие им директивы:

{$mode objfpc}

{$mode delphi}

Фактически, если компилятор встречает в объявлении модулей objpas, он выдает предупреждение.

6.1 Определения классов

6.2 Обычные и статические поля

6.2.1 Обячные поля/переменные

6.2.2 Переменняе/поля класса

6.3 Экземпляр класса

6.4 Уничтожение класса

6.5 Методы

6.5.1 Объявление

6.5.2 Вызов

6.5.3 Виртуальные методы

6.5.4 Методы класса

6.5.5 Конструктор и деструктор класса

6.5.6 Стасический метод класса

6.5.7 Методы обработки сообщений

6.5.8 Использование наследования

6.6 Свойства

6.6.1 Определение

6.6.2 Индексированные свойства

6.6.3 Массив свойств

6.6.4 Свойства по умолчанию

6.6.5 Публикуемые (Published) свойства

6.6.6 Сохраняемая информация

6.6.7 Переопределение свойств

6.7 Свойства класса

6.8 Вложенные типы, константы и переменные