Классы



Классы

Классы — это специальные типы данных языка Object Pascal, которые используются для описания объектов.

В состав класса входят поля, свойства и методы. Подробное их описание смотрите далее в этой главе.

Типичное определение нового класса выглядит следующим образом:

type Имя класса = class (Класс-предок)
{Список состава класса} private
{частные описания} protected {защищенные описания} public
{общедоступные описания} published
{опубликованные описания} end; где Имя класса — любое корректное имя (выбирается произвольно), Класс-предок — название класса, наследником которого является создаваемый класс, а Cписок состава класса содержит свойства и методы нового класса.

Для каждого элемента класса можно установить разную видимость. Для этого предназначены четыре ключевых слова: private, protected, public и published.

Видимость элемента класса определяет, где в программе и как будет виден данный элемент класса. Минимальная видимость элемента класса задается ключевым словом private, ключевое слово protected определяет средний уровень видимости. Наконец, public и published определяют наивысшую степень доступности.

Если перед описанием элемента класса не ставится ключевое слово, определяющее его степень видимости, то считается, что видимость элемента такая же, как и у предыдущего элемента класса.



Рассмотрим все четыре ключевых слова более подробно.

  • Private (частные) — определяет элементы класса, которые не видны вне модуля, в котором был объявлен класс, содержащий эти элементы. Другими словами, частные методы не могут быть вызваны из других модулей, а частные поля или свойства не могут быть считаны или изменены из других модулей.
  • Protected (защищенные) — определяет элементы класса, которые видны только внутри модуля, где определен класс, содержащий эти элементы, а также внутри других модулей, где присутствуют классы-потомки данного класса.
  • Public (общедоступные) — определяет элементы класса, которые видны в любом месте программы и из любых модулей, в которых виден сам класс.
  • Published (опубликованные) — определяет элементы класса, имеющие ту же видимость, что и public-элементы. Единственное отличие заключается в том, что опубликованные элементы порождают информацию о типе времени выполнения (RTTI). Благодаря данной информации. Kylix может осуществить проверку принадлежности элементов объекта к тому или иному классу. Kylix использует RTTI для доступа к значениям свойств при сохранении и загрузке файлов форм, чтобы иметь возможность отобразить свойства в инспекторе объектов и ассоциировать конкретные методы с конкретными свойствами. Все методы классов могут быть опубликованы, за исключением перегруженных (overload) методов, имеющих одинаковые имена.

Перегруженными называются методы, которые имеют одинаковые имена, но используют в качестве параметров данные различных типов. В процессе вызова такого метода компилятор решает сам, какой из методов вызвать в зависимости от аргументов, передаваемых при вызове метода.

В Kylix имеется понятие абстрактного класса.

Абстрактный класс описывает несуществующий объект. Он нужен для того, чтобы описать некоторые фундаментальные свойства и методы объектов, которые будут созданы из абстрактного класса.

Все объекты в Kylix созданы из абстрактного класса TObject. Класс TObject — предок многих простых классов. Этот класс объединяет в себе основные функции, которые свойственны всем объектам Kylix. TObject обеспечивает:

  • возможность создания, уничтожения и управления экземплярами объектов, а также резервирование памяти и ее освобождение после уничтожения экземпляра;
  • поддержку информации об объектах и типах;
  • поддержку обработки сообщений.

Итак, все классы в Kylix — потомки класса TObject.

Класс называется прямым потомком класса TObject, если он произведен непосредственно от класса TObject.

Класс называется косвенным потомком от класса TObject, если он произведен от класса, являющегося прямым или косвенным потомком класса TObject (то есть произведен от промежуточного класса).

Примечание

В другой литературе можно встретить названия дочерний класс и класс-потомок. Дочерний класс — это прямой потомок, а класс-потомок — это косвенный потомок в терминологии данной книги.

Если при создании нового класса не указывается родительский класс, то считается, что родитель — класс TObject.

Назад
Содержание
Вперед


Содержание раздела