zoukankan      html  css  js  c++  java
  • Delphi中Interface接口的使用方法

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


    {   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、接口在用完后会自释放, 并同时释放拥有它的类; 这很方便, 但同时带来很多问题.
    }
     

    unit Unit1;

    interface

    uses

    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

    type

    //定义接口如果接口独立成一个文件,则在应用程序中和实现程序中都要引用该接口文件;

        ICar = interface (IInterface)

            ['{ED52E264-6683-11D7-B847-001060806215}']

    procedure drive;

    end;

    //接口实现类1,一定要加入TinterfacedObject才能使用;

        TCar = class(TInterfacedObject,ICar)

    public

            procedure drive;

    end;

    //接口实现类2,一定要加入TinterfacedObject才能使用;

        THouseCar = class(TInterfacedObject,ICar)

    public

    procedure drive;

    end;

    TForm1 = class(TForm)

        Button1: TButton;

    procedure Button1Click(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    function getCar:ICar; //此处可用别的方式来实现获取ICAR,如放在DLL文件中作为导出函数;

    end;

    var

    Form1: TForm1;

    implementation

    {$R *.dfm}

    { TCar }

    procedure TCar.drive;

    begin

    ShowMessage('TCar.drive');

    end;

    { THouseCar }

    procedure THouseCar.drive;

    begin

       ShowMessage('THouseCar.drive');

    end;

    procedure TForm1.Button1Click(Sender: TObject);

    var

    s:ICar;

    begin

    s:= getCar;

    s.drive;

    end;

    function TForm1.getCar:ICar;

    begin

       Result:=THouseCar.Create; //此处为整个实现的关键点;

    //Result:=TCar.Create;

    end;

    end.

  • 相关阅读:
    JS笔记009
    JS笔记008
    JS笔记007
    JS笔记006
    JS笔记005
    JS笔记004
    JS笔记003
    JS笔记001
    CSS3笔记012
    expdp SYNONYM of publick and schema owner
  • 原文地址:https://www.cnblogs.com/h2zZhou/p/4739222.html
Copyright © 2011-2022 走看看