Рассмотрим гипотетическую иерархию объектов, начиная с:
TFruit = class(TObject)
public
constructor Create(Color: TColor); virtual;
end;
и его потомок:
TApple = class(TFruit)
public
constructor Create(); overload; virtual;
constructor Create(Color: TColor); overload; override; //deprecated. Calls other constructor - maintaining the virtual constructor chain
end;
Идея заключается в том, что я переопределил виртуальный конструктор базового класса с перегрузкой , которая также оказывается виртуальной.
Дельфи жалуется:
Метод «Создать» скрывает виртуальный метод базового типа «TFruit»
За исключением того, что это не скрывает это - это прямо там!
- i переопределил виртуальный метод в предке и
- i перегружен это с другой версией
В чем дело?