我在基类T声明一个函数A为VIRTUAL。
T.A;
begin
result:='1';
end;
S继承自T,也声明一个A。
S.A;
begin
result:='2';
end;
在程序中这样:variable:S;
variable.create//调用构造初始化
variable.A;//为什么返回的总是基类的结果1????????
是不是基类如果是virtual,子类方法一定要有override关键字??
T.A;
begin
result:='1';
end;
S继承自T,也声明一个A。
S.A;
begin
result:='2';
end;
在程序中这样:variable:S;
variable.create//调用构造初始化
variable.A;//为什么返回的总是基类的结果1????????
是不是基类如果是virtual,子类方法一定要有override关键字??
用下面代码测试
type
T = class
procedure A; virtual;
end; S = class(T)
procedure A;
end;
...
{ T }procedure T.A;
begin
ShowMessage('ta');
end;{ S }procedure S.A;
begin
ShowMessage('sa');
end;
...
procedure TForm1.Button1Click(Sender: TObject);
var
ts: S;
begin
ts := S.Create;
ts.A;
ts.Free;
end;