У меня есть базовый класс с виртуальной функцией:Какие причины «Метод W1010«% s »скрывает виртуальный метод базового типа«% s »? Предупреждение?
TMyBaseClass = class(TObject)
public
ValueOne : integer;
procedure MyFunction(AValueOne : integer); virtual;
end;
procedure TMyBaseClass.MyFunction(AValueOne : integer);
begin
ValueOne := ValueOne;
end;
Потомок класс реализует функцию с тем же именем. Эта функция добавляет новый параметр и вызывает функцию своего оркестра.
TMyDerivedClass = class(TMyBaseClass)
public
ValueTwo : integer;
procedure MyFunction(AValueOne : integer; AValueTwo : integer);
end;
procedure TMyDerivedClass.MyFunction(AValueOne : integer; AValueTwo : integer);
begin
inherited MyFunction(AValueOne);
ValueTwo := ValueTwo;
end;
При составлении, следующее предупреждающее сообщение показано: W1010 Метод
«Моя_функция» скрывает виртуальный метод базового типа «TMyBaseClass»
Я нашел решение проблемы чтение another question, но мне интересно, что вызывает это предупреждение. ли TMyDerivedClass.MyFunction скрывает TMyBaseClass.MyFunction, даже если две функции имеют разные параметры? Если да, то почему?
Спасибо за ваш ответ, вы решили все мои сомнения по этому поводу. – ExDev