Приведение типов объектов

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

Например:

type
  Person = class
  ...
  end;
  Student = class(Person)
    ...
    procedure IncCourse;
  end;
...
var
 
p: Person;
  s: Student;
begin
  p := new Student('Иванов',20,3,1); // неявное преобразование к типу базового класса
  s := Student(p); // явное приведение к типу производного класса
end.

При выполнении приведения к производному классу может возникнуть исключение (если приведение невозможно; например, если в переменной p на момент выполнения операции будет храниться объект типа Person).

После приведения к типу производного класса можно обращаться к любым полям, свойствам и методам производного класса:

s.IncCourse;

или без присваивания промежуточной переменной:

Student(p).IncCourse;

Проверка на возможность приведения к типу производного класса и безопасное приведение к типу производного класса осуществляется с помощью операций is и as.