在 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;
<小时/>
当然,您始终可以在对象实例上使用类函数,因此在 TMyClass1
对象实例上调用 getSomething
也可以。
关于delphi - 创建抽象类函数的目的是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58778074/