• Delphi 的接口(2) 第一个例子



    第一个例子的操作实况录像: Interface_Test.rar

    代码文件:

    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    
    type
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        Button4: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
        procedure Button4Click(Sender: TObject);
      end;
    
      IMyInterface1 = interface
        function Func1: Integer;
        function Func2: Integer;
      end;
    
      IMyInterface2 = interface
        procedure Proc1;
        procedure Proc2;
      end;
    
      TMyClass1 = class(TInterfacedObject, IMyInterface1, IMyInterface2)
      public
        procedure Proc1;
        procedure Proc2;
        function Func1: Integer;
        function Func2: Integer;
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    { TMyClass1 }
    
    function TMyClass1.Func1: Integer;
    begin
      ShowMessage('IMyInterface1.Func1');
      Result := 0;
    end;
    
    function TMyClass1.Func2: Integer;
    begin
      ShowMessage('IMyInterface1.Func2');
      Result := 0;
    end;
    
    procedure TMyClass1.Proc1;
    begin
      ShowMessage('IMyInterface2.Proc1');
    end;
    
    procedure TMyClass1.Proc2;
    begin
      ShowMessage('IMyInterface2.Proc2');
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    var
      c: TMyClass1;
    begin
      c := TMyClass1.Create;
    
      c.Func1;
      c.Func2;
    
      c.Proc1;
      c.Proc2;
    
      c.Free;
    end;
    
    procedure TForm1.Button2Click(Sender: TObject);
    var
      i1: IMyInterface1;
    begin
      i1 := TMyClass1.Create;
      i1.Func1;
      i1.Func2;
    end;
    
    procedure TForm1.Button3Click(Sender: TObject);
    var
      i2: IMyInterface2;
    begin
      i2 := TMyClass1.Create;
      i2.Proc1;
      i2.Proc2;
    end;
    
    procedure TForm1.Button4Click(Sender: TObject);
    var
      c: TMyClass1;
      i1: IMyInterface1;
      i2: IMyInterface2;
    begin
      c := TMyClass1.Create;
    
      i1 := c;
      i1.Func1;
      i1.Func2;
    
      i2 := c;
      i2.Proc1;
      i2.Proc2;
    
    //  c.Free; {}
    end;
    
    end.
    

    示例注释(现在应该知道的):

    {
      1、接口命名约定 I 起头, 就像类从 T 打头一样.
    
      2、接口都是从 IInterface 继承而来; 若是从根接口继承, 可省略.
    
      3、接口成员只能是方法、属性, 没有字段.
    
      4、接口成员都是公开的, 不需要 private、protected、public、published 等任何访问限制.
    
      5、因为接口只声明、无实现, 也用不到继承与覆盖相关的修饰(virtual、dynamic、abstract、override).
    
      6、一个接口可以从另一个接口继承, 但不能从多个接口继承; 不过 Delphi.Net 已支持接口的多继承了.
    
      7、一个类可以实现多个接口: TMyClass = class(父类, 接口1, 接口2, ...)  end;
    
      8、不过实现接口的类有多么丰富, 接口只拥有自己声明的成员.
    
      9、实现接口的类一般继承于 TInterfacedObject, 直接从 TObject 继承会增加一些麻烦而重复的工作.
    
      10、接口在用完后会自释放, 并同时释放拥有它的类; 这很方便, 但同时带来很多问题.
    }
     


  • 相关阅读:
    kafka学习默认端口号9092
    kafka搜索介绍
    进程线程区别
    linux下的mysql修改默认编码
    [LeetCode] #19 Remove Nth Node From End of List
    [LeetCode] #18 4Sum
    [LeetCode] #17 Letter Combinations of a Phone Number
    [LeetCode] #16 3Sum Closest
    编程之美2015 #1 2月29日
    编程之美2015 #2 回文字符序列
  • 原文地址:https://www.cnblogs.com/del/p/1496582.html
Copyright © 2020-2023  润新知