Consider the hypothetical object hierarchy, starting with:
TFruit = class(TObject)
public
constructor Create(Color: TColor); virtual;
end;
and its descendant:
TApple = class(TFruit)
public
constructor Create(); overload; virtual;
constructor Create(Color: TColor); overload; override; //deprecated. Calls other constructor - maintaining the virtual constructor chain
end;
The idea here is that I've overridden the virtual constructor of the base class, with an overload that also happens to be virtual.
Delphi complains:
Method 'Create' hides virtual method of base type 'TFruit'
Except it doesn't hide it - it's right there!
- I overrode the virtual method in the ancestor, and
- I overloaded it with another version
What's the deal?
reintroduce;
to avoid it. – user743382