在Delphi中,我经常看到这样的代码:
TmyClass = class
public
class function getsomething: integer; virtual; abstract;
end;
但是这种声明(即类函数)的目的是什么,因为调用TmyClass.getsomething
总是会失败,因为它没有实现,即使它是在子类中实现的。
如果直接调用TmyClass.getSomething
,它将失败,但是与元类结合使用可能很有用。就像在非类函数上一样,它为您提供了定义抽象API的机会。
例如:
TmyClassClass = class of TMyClass;
TmyClass1 = class(TmyClass)
public
class function getSomething: integer; override;
end;
var
c: TmyClassClass;
c := TmyClass1;
c.getSomething;
当然,您始终可以在对象实例上使用类函数,因此在getSomething
对象实例上调用TMyClass1
也会起作用。