---恢复内容开始---
四、抽象类和它的实例
Delphi中有一个类称为是抽象类,你不能天真的直接为它创建一个实例,如
var StrLst: TString; begin StrLst:= TString.Create; StrLst.Add('I love China'); StrLst.Free; end;
这是不对的,因为TString是一个抽象类。
那么怎么为这样的抽象类构造实例呢?答案就是借助它的非抽象子类。我们知道TString有一个TStringList的非抽象子类。所以可以这样操作
var
StrLst: TString;
//还是可以通过抽象类来进行声明
//或者直接用 StrLst:TStringList; 不过前者更好一些
begin
StrLst:= TStringList
.
Create;
//但是创建具体的对象就必须使用抽象类的非抽象子类
//而且这样创建的实例在内存中是其子类的结构,
//尽管在var里面使用抽象类声明的,但是具体的create是其非抽象子类
StrLst
.
Add(
'I love China'
);
StrLst
.
Free;
end
;
---恢复内容结束---