Delphi: Метод 'Create' скрывает виртуальный метод базы - но он тут же

Рассмотрим иерархию гипотетических объектов, начиная с:

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;

Идея в том, что я переопределил виртуальный конструктор базового класса с перегрузкой , которая также оказывается виртуальной.

Delphi жалуется:

Метод 'Create' скрывает виртуальный метод базового типа 'TFruit'

За исключением того, что он не скрывает его - он прямо здесь!

  • i переопределил виртуальный метод в предке, а
  • i перегрузил его другой версией

В чем дело?

20
задан Uli Gerhardt 3 February 2012 в 08:10
поделиться