delphi 纯虚函数的应用
编程有时候会用到,有部分功能是未来实现的,具体做什么不知道。所以需要预留空间,当这类经常会用到,每一次都要重复上下文代码,把功能安置其中,这样非常麻烦。有没有一种方法,可以把位置函数功能夹杂其中。把功能作为参数传递,这样每次只写新功能即可,这时纯虚函数就排上了用场。
-
什么情况会用到纯虚函数
功能未知反正需要做些什么,具体什么不知道 -
怎么用
type
// 此类作为形式传递参数用
TMyUnknowClass = class
// 纯虚函数 本类中无需实现只声明即可
procedure DoSomthing; virtual; abstract;
end;
// 实际使用时再继承它
TUseClass = class(TMyUnknowClass)
// 重写你自己需要的功能
procedure DoSomthing; override;
end;
TForm2 = class(TForm)
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
// 把这个定义纯虚函数的类传递进去
procedure Add(A: TMyUnknowClass);
{ Public declarations }
end;
implementation
{$R *.dfm}
procedure TForm2.Add(A: TMyUnknowClass);
begin
// 预留的功能 功能未知
A.DoSomthing;
end;
procedure TForm2.Button1Click(Sender: TObject);
var
m: TUseClass;
begin
// 使用时定义并继承有纯虚函数的类 完成实际功能
m := TUseClass.Create;
Add(m);
m.DisposeOf;
end;
{ TUseClass }
procedure TUseClass.DoSomthing;
begin
ShowMessage('TUseClass');
end;
// 这样就实现了预留未知功能的任务