在Delphi中,给出以下内容:
TFruit = class;
TFruitClass = class of TFruit;
TApple = class(TFruit);
TRedApple = class(TApple);
如果我有一个TFruitClass
变量,我怎样才能知道它是否继承自TApple
?例如。说我有
var
FruitClass: TFruitClass;
...
FruitClass := TRedApple;
在这种情况下,如何验证FruitClass是否确实从TApple
继承?使用FruitClass is TApple
仅适用于类实例。
答案 0 :(得分:13)
使用InheritsFrom:
if TApple.InheritsFrom(TFruit) then
...
您也可以使用
var
Fr: TFruitClass;
X: TObject;
begin
if X.InheritsFrom(TFruit) then
Fr := TFruitClass(X.ClassType);
end;
答案 1 :(得分:0)
我假设您将FruitClass变量传递给某个方法,在这种情况下您应该阅读:
if FruitClass.InheritsFrom(TApple) then
请注意,您甚至不需要测试nil,因为InheritsFrom是一个类函数,因此不需要分配Self变量。