Rab*_*Guy -4 delphi delphi-xe8
我可以用我使用的其他语言来做到这一点.例如,我可以在创建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);
Run Code Online (Sandbox Code Playgroud)
所有这些都在一个文件中.现在我想要两个实现此接口的文件或者至少知道它.在PHP我可以说
class blah implements thisInterface
Run Code Online (Sandbox Code Playgroud)
但我在Delphi中找不到相同的东西.我想要做的是在一个单元中实现它,而在另一个单元中我只是想让它知道这些函数/过程/等等,所以我可以从那里调用它们.我不在乎它是如何实现的.我认为这是接口并将它们与实现者分开的重点?
我如何在Delphi中执行此操作?
您需要使用实际的界面,例如:
type
IsampleType = interface
procedure foo;
function bar : String;
procedure foobar(a: boolean);
end;
Run Code Online (Sandbox Code Playgroud)
一个interface只能有方法和属性,而不是变量.
然后,您可以根据需要在类中实现接口,例如:
type
TMyClass = class(TInterfacedObject, IsampleType)
public
someVar: Integer;
someOtherVar: Integer;
someObj: TneatObj;
procedure foo;
function bar : String;
procedure foobar(a: boolean);
end;
Run Code Online (Sandbox Code Playgroud)
var
Sample: IsampleType;
begin
Sample := TMyClass.Create;
// use Sample as needed...
end;
Run Code Online (Sandbox Code Playgroud)
Delphi接口是引用计数的. TInterfacedObject为您处理引用计数.当引用计数降为0时,它会自动释放对象.
您可以在Delphi的文档中找到更多详细信息:
| 归档时间: |
|
| 查看次数: |
213 次 |
| 最近记录: |