Delphiのインタフェース(5)-同じインタフェース、異なる実装

1373 ワード

コードファイル:


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.