小编Sea*_*ean的帖子

为什么不调用后代的抽象基类方法版本?

我正在尝试创建一个简单的类THistory,它有一个过程,它接受一个实现简单接口的抽象基类.

下面的代码编译,但是THistory类调用基类HistoryRecords抽象Insert proc而不是传入的子类Insert proc.我错过了什么?

谢谢你的帮助!

unit uHistory;

interface

uses Dialogs;

type

IHistoryRecord = interface
  ['{67C90064-1667-4DE0-AF52-11B6E5A00892}']
  procedure Insert();
end;

THistoryRecord = class abstract(TInterfacedObject, IHistoryRecord)
  procedure Insert(); virtual; abstract;
end;

THistory = class(TObject)
  public
  procedure Add(pHistoryRecord : THistoryRecord);
end;

TAlarmHistoryRecord = class(THistoryRecord)
  procedure Insert();
end;

implementation

{ THistory }

procedure THistory.Add(pHistoryRecord: THistoryRecord);
begin
  pHistoryRecord.Insert();
end;

{ TAlarmHistoryRecord }

procedure TAlarmHistoryRecord.Insert;
begin
  MessageDlg('Alarm History Record - Insert Method', mtInformation, [mbOK], 0);
end;

end.

Usage
procedure TForm1.Button1Click(Sender: TObject);
var
  lHistory : THistory;
  lHistoryRecord : …
Run Code Online (Sandbox Code Playgroud)

delphi interface abstract

3
推荐指数
2
解决办法
200
查看次数

标签 统计

abstract ×1

delphi ×1

interface ×1