码迷,mamicode.com
首页 > 其他好文 > 详细

Delphi接口

时间:2014-07-07 14:02:00      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:des   blog   http   2014   io   div   

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.

  bubuko.com,布布扣

Delphi接口,布布扣,bubuko.com

Delphi接口

标签:des   blog   http   2014   io   div   

原文地址:http://www.cnblogs.com/pengshaomin/p/3815385.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!