四、抽象类和它的实例
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;