Доброй ночи господа!
Возник вопрос по принципам ООП, попробую объяснить на надуманном примере.
Есть базовый класс (TForm1), в нем есть функция (ReturnForm) возвращающая некий класс (пусть это будет тоже TForm1)
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
function ReturnForm: TForm1; virtual;
end;
Так же есть дочерний класс
TForm2 = class(TForm1)
private
{ Private declarations }
public
{ Public declarations }
function ReturnForm: TForm2; reintroduce;
end;
так вот мне надо в дочернем переопределить тип возвращаемого результата функцией ReturnForm.
Сделать то получилось, с помощью директивы reintroduce и кода
function TForm2.ReturnForm: TForm2;
begin
Result := TForm2(inherited ReturnForm);
end;
но что-то подсказывает мне что это не совсем правильно. Собственно вопрос и состоит правильно ли это? и если нет, то как правильно?