有一个Frame,在public里面有个方法FrameInit,我要在该类的派生类中重载该类怎么实现?unit untBase;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls;type
TfrmBase = class(TFrame)
private
{ Private declarations }
public
{ Public declarations }
procedure FrameInit;virtual;abstract;
procedure FrameTerminate;virtual;abstract;
end;
implementation
{$R *.dfm}
end.
派生类代码:
unit untWelcome;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, untBase;type
TfrmWelcome = class(TfrmBase)
private
{ Private declarations }
public
{ Public declarations }
procedure FrameInit;overload;
procedure FrameTerminate;overload;
end;implementation{$R *.dfm}procedure TfrmWelcome.FrameInit;
begin
ShowMessage('FrameInit');
end;
procedure TfrmWelcome.FrameTerminate;
begin
ShowMessage('FrameTerminate');
end;
end.
定义一个 myFrame:TfrmBase;
构造:myFrame:=TfrmWelcome.Create(nil);
在执行 myFrame.FrameInit的时候,抛出异常EAbstractError,这是为什么阿?理论上来讲,我是对的啊。。
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls;type
TfrmBase = class(TFrame)
private
{ Private declarations }
public
{ Public declarations }
procedure FrameInit;virtual;abstract;
procedure FrameTerminate;virtual;abstract;
end;
implementation
{$R *.dfm}
end.
派生类代码:
unit untWelcome;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, untBase;type
TfrmWelcome = class(TfrmBase)
private
{ Private declarations }
public
{ Public declarations }
procedure FrameInit;overload;
procedure FrameTerminate;overload;
end;implementation{$R *.dfm}procedure TfrmWelcome.FrameInit;
begin
ShowMessage('FrameInit');
end;
procedure TfrmWelcome.FrameTerminate;
begin
ShowMessage('FrameTerminate');
end;
end.
定义一个 myFrame:TfrmBase;
构造:myFrame:=TfrmWelcome.Create(nil);
在执行 myFrame.FrameInit的时候,抛出异常EAbstractError,这是为什么阿?理论上来讲,我是对的啊。。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货