delphi的接口support_Delphi接口

program Demo1;

{

Create Date: 2014-06-29

Author: P.S.M

1.接口Demo1

}

{$APPTYPE CONSOLE}

uses

SysUtils;

{定义接口}

type

ITestInterface = interface

{GUID通过CTRL+G自动产生}

['{15EAD871-2B5E-4F51-A14E-7D518A2371EF}']

procedure Test;

end;

{TInterfacedObject 实现了_AddRef, _Release方法可以自动释放对象}

TTest1 = class(TInterfacedObject, ITestInterface)

public

{接口实现}

procedure ITestInterface.Test = GetTest;

{测试接口}

procedure GetTest;

{重载Destroy方法}

destructor Destroy;override;

end;

TTest2 = class(TInterfacedObject, ITestInterface)

public

{接口实现}

procedure Test;

{重载Destroy方法}

destructor Destroy;override;

end;

{ TTest }

destructor TTest1.Destroy;

begin

WriteLn('对象1释放了');

sleep(2000);

inherited Destroy;

end;

procedure TTest1.GetTest;

begin

WriteLn('接口1');

end;

{ TTest2 }

destructor TTest2.Destroy;

begin

WriteLn('对象2释放了');

sleep(2000);

inherited Destroy;

end;

procedure TTest2.Test;

begin

WriteLn('接口2');

end;

procedure Output(Obj: ITestInterface);

begin

Obj.Test;

end;

var

ITest1, ITest2: ITestInterface;

begin

{接口什么时候释放? 当它的引用计数为0是自动释放,作用域有效在函数体bend end,函数退出时自动减少引用计数 }

try

ITest1 := TTest1.Create;

ITest2 := TTest2.Create;

Output(Itest1);

OutPut(ITest2);

except

on E: Exception do

Writeln(E.ClassName, ': ', E.Message);

end;

end.

  • 0
    点赞
  • 1
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页
评论

打赏作者

weixin_39746652

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值