私は仮想関数を持つ基本クラスをしました:"W1010メソッド '%s'は、基本タイプ '%s'の仮想メソッドを警告します。警告?
TMyBaseClass = class(TObject)
public
ValueOne : integer;
procedure MyFunction(AValueOne : integer); virtual;
end;
procedure TMyBaseClass.MyFunction(AValueOne : integer);
begin
ValueOne := ValueOne;
end;
子孫クラスは、同じ名前の関数を実装します。 この関数は新しいparamを追加し、そのanchestorの関数を呼び出します。
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法
'MyFunctionを' は基本型の仮想メソッドを隠し 'TMyBaseClass'
私はこの問題に対する解決策を見つけましたanother questionを読んでいますが、私はこの警告の原因について疑問を抱いています。 2つの関数のパラメータが異なる場合でも、TMyDerivedClass.MyFunctionはTMyBaseClass.MyFunctionを非表示にしますか?もしそうなら、なぜですか?
あなたの答えをありがとう、あなたはそれについてのすべての疑問を解決しました。 – ExDev