Поскольку реальный экземпляр объекта может оказаться наследником класса, указанного при описании объектной переменной или параметра, бывает необходимо проверить, к какому классу принадлежит объект на самом деле. Чтобы программист мог выполнять такого рода проверки, каждый объект хранит информацию о своем классе.
В языке Delphi существуют операторы is и as, с помощью которых выполняется соответственно проверка на тип (type checking) и преобразование к типу (type casting).
Например, чтобы выяснить, принадлежит ли некоторый объект Obj к классу TFigure или его наследнику, следует использовать оператор is:
var Obj: TObject;... if Obj is TFigure then ... |
Для преобразования объекта к нужному типу используется оператор as, например
with Obj as TFigure do Color:= red; |
Стоит отметить, что для объектов применим и обычный способ приведения типа:
with TFigure(Obj) do Color := Red; |
Вариант с оператором as лучше, поскольку безопасен. Он генерирует ошибку (точнее исключительную ситуацию при выполнении программы (run-time error)), если реальный экземпляр объекта Obj не совместим с классом TFigure.