Приведение типов объектов
Объект производного класса неявно преобразуется к типу базового класса. Обратное преобразование от типа базового класса к типу производного класса может быть выполнено только явно с помощью операции приведения типа.
Например:
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
.