我可以使用其他语言执行此操作。例如,我可以在创建Web应用程序时在PHP中执行此操作,但这是我想要做的并且无法找到解决方案:
我想定义一个界面说:
unit myBigUnit;
interface
uses someUnits;
type
TsampleType = class
someVar: Integer;
someOtherVar: Integer;
someObj: TneatObj;
procedure foo;
function bar : String;
procedure foobar(a: boolean);
所有这些都在一个文件中。现在我想要两个实现此接口的文件或者至少知道它。在php我可以说
class blah implements thisInterface
但是我在Delphi中找不到相同的东西。我想要做的是在一个单元中实现它,而在另一个单元中我只是想让它知道这些函数/过程/等等,所以我可以从那里调用它们。我不太关心它是如何实现的。我认为这是接口并将它们与实现者分开的重点?
如何在Delphi中执行此操作?
答案 0 :(得分:5)
您需要使用实际界面,例如:
type
IsampleType = interface
procedure foo;
function bar : String;
procedure foobar(a: boolean);
end;
interface
只能包含方法和属性,而不能包含变量。
然后,您可以根据需要在类中实现接口,例如:
type
TMyClass = class(TInterfacedObject, IsampleType)
public
someVar: Integer;
someOtherVar: Integer;
someObj: TneatObj;
procedure foo;
function bar : String;
procedure foobar(a: boolean);
end;
var
Sample: IsampleType;
begin
Sample := TMyClass.Create;
// use Sample as needed...
end;
Delphi接口是引用计数的。 TInterfacedObject
为您处理引用计数。当引用计数降为0时,它会自动释放对象。
您可以在Delphi的文档中找到更多详细信息:
答案 1 :(得分:3)
然后你应该使用一个接口:
...
type
IsampleType = Interface
.....
在你的课程中实现这个:
type
TIntfType = class(TInterfacedObject, ISampleType)
....
以及您在Delphi中使用F1找到的详细信息...