• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Delphi接口

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
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人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi结构体数组指针的问题发布时间:2022-07-18
下一篇:
Delphi中的MD5实现方法(转)发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap