定义create当然是可以用override的了,楼主是在父类的create里没有申明是虚方法或是其它什么的,提供一段代码给你参考 unit uSayHello;interfacetype TMan = class (TObject) public Language: string; Married: Boolean; Name: string; SkinColor: string; constructor create; virtual; function SayHello:string;virtual;abstract; end; TChinese = class (TMan) public constructor create;override; function SayHello:string;override; end; TAmerican = class (TMan) public constructor create;override; function SayHello:string;override; end; TFrench = class (TMan) public constructor create;override; function SayHello:string;override; end; TKorean = class (TMan) public constructor create;override; function SayHello:string;override; end;implementation{ ************************************* TMan ************************************* } constructor TMan.create; begin Name:='张三'; Language:='中文'; SkinColor:='黄色'; end;constructor TChinese.create; begin inherited; end;constructor TAmerican.create; begin Name:='Lee'; Language:='英文'; SkinColor:='黑色'; end;constructor TFrench.create; begin Name:='苏菲'; Language:='法文'; SkinColor:='白色'; end;constructor TKorean.create; begin Name:='金知中'; Language:='韩文'; SkinColor:='黄色'; end;{ ===声明了抽象方法后,这部分实现代码不再需要了=== function TMan.SayHello; begin Result:='chinese.bmp'; end; }end.
在析构函数时才要用到override的
unit uSayHello;interfacetype
TMan = class (TObject)
public
Language: string;
Married: Boolean;
Name: string;
SkinColor: string;
constructor create; virtual;
function SayHello:string;virtual;abstract;
end; TChinese = class (TMan)
public
constructor create;override;
function SayHello:string;override;
end; TAmerican = class (TMan)
public
constructor create;override;
function SayHello:string;override;
end; TFrench = class (TMan)
public
constructor create;override;
function SayHello:string;override;
end; TKorean = class (TMan)
public
constructor create;override;
function SayHello:string;override;
end;implementation{
************************************* TMan *************************************
}
constructor TMan.create;
begin
Name:='张三';
Language:='中文';
SkinColor:='黄色';
end;constructor TChinese.create;
begin
inherited;
end;constructor TAmerican.create;
begin
Name:='Lee';
Language:='英文';
SkinColor:='黑色';
end;constructor TFrench.create;
begin
Name:='苏菲';
Language:='法文';
SkinColor:='白色';
end;constructor TKorean.create;
begin
Name:='金知中';
Language:='韩文';
SkinColor:='黄色';
end;{
===声明了抽象方法后,这部分实现代码不再需要了===
function TMan.SayHello;
begin
Result:='chinese.bmp';
end;
}end.
用constructor定义就可以了