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
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值