在Delphi中,我经常看到这样的代码:
TmyClass = class
public
class function getSomething: integer; virtual; abstract;
end;
Run Code Online (Sandbox Code Playgroud)
但是,这样的声明(即类函数)的目的是什么,因为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;
Run Code Online (Sandbox Code Playgroud)
当然,你总是可以在对象实例使用类函数,因此调用getSomething的TMyClass1对象实例会工作,太。
| 归档时间: |
|
| 查看次数: |
145 次 |
| 最近记录: |