zoukankan      html  css  js  c++  java
  • Delphi 的接口(5) 一样的接口、不一样的实现


    代码文件:

    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    
    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      end;
    
      IMyInterface1 = interface
        function Func(a,b: Integer): Integer;
      end;
    
      TAdd = class(TInterfacedObject, IMyInterface1)
      public
        function Func(a: Integer; b: Integer): Integer;
        destructor Destroy; override;
      end;
    
      TMul = class(TInterfacedObject, IMyInterface1)
      public
        function Func(a: Integer; b: Integer): Integer;
        destructor Destroy; override;
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    { TAdd }
    
    destructor TAdd.Destroy;
    begin
      ShowMessage('TAdd.Destroy');
      inherited;
    end;
    
    function TAdd.Func(a, b: Integer): Integer;
    begin
      Result := a + b;
    end;
    
    { TMul }
    
    destructor TMul.Destroy;
    begin
      ShowMessage('TMul.Destroy');
      inherited;
    end;
    
    function TMul.Func(a, b: Integer): Integer;
    begin
      Result := a * b;
    end;
    
    { TForm1 }
    
    procedure TForm1.Button1Click(Sender: TObject);
    var
      I: IMyInterface1;
    begin
      I := TAdd.Create;
      ShowMessage(IntToStr(I.Func(9, 9))); {18}
    
      I := TMul.Create;  {I 在指向新的目标前会先释放前面所属的类}
      ShowMessage(IntToStr(I.Func(9, 9))); {81}
    end;
    
    end.
    
  • 相关阅读:
    与DSP通信时,RD&WR信号
    4.2.1 Vector bit-select and part-select addressing
    数据校验
    数据结构 (树,图)
    ASOP编译说明
    os
    20180203-增与查
    yum安装MariaDB
    20180202之engine,URL,base,session
    列表
  • 原文地址:https://www.cnblogs.com/del/p/1496912.html
Copyright © 2011-2022 走看看