请教各位,接口是怎么实现的?接口有什么好处?能否举简单的实例说明一下呢?先谢谢了!

解决方案 »

  1.   

    接口就是类的函数的集合。现在我知道的好处有两个,一是降低耦合依赖程度,二是通过接口实现多父类继承。
    具体的你需要看看李维的inside vcl这本书,里面有对接口的详细描述。
      

  2.   

    如果按楼上的所说,绝对会把一个初学者弄得五迷三道,初学对接口最难的就是建立概念,如果把接口和类混在一起说,就更没法说清了。
      接口分广义和狭义之分,很多国内翻译的书对此误人非浅。在DELPHI中,广义接口除了你要问的接口还包括抽象类、在单元文档前声明的INTERFACE等,狭义接口指的是在编程中用INTERFACE定义的。
      简单地说狭义接口(以后称接口)就是定义了方法和属性的空架子(术语为方法签名,包括函数和过程),属性本身也是存过程和取函数,即也是方法,在接口定义中所有成员都是默认的PUBLIC,没有数据成员。这些方法由继承它的子类来实现,这个子类只能有一个而且必须有一个父类,却可以有多个父接口。
        接口可以连接完全不同的类对某一共同操作的桥梁,比如,“跑”这个操作,如果要用类继承,可以在子类中去重载,但是“日本猪”、“小泉家族”、“耗子”、“机器”、“车船”这些类都有“跑”的功能,单纯类继承是无法实现的,但用接口可以,首先定义一个接口“TRUN”,然后再继承这个接口形成上述的类,在类中实现这个接口。
    算了,边给代码解释:type
      TRUN=interface
       procedure 跑;
      end; 日本猪=class(TInterfacedObject,TRUN)
           //TInterfacedObject是实现了接口三个方法的Object类,其中一个是QueryInterface
         procedure 跑;
         ............
        //..........
      end;  
     小泉家族=class(TInterfacedObject,TRUN)
         procedure 跑;
         ............
        //..........
      end;implementation
    ......//应用:
    procedure test;
    var
    牲:日本猪;
    倭:小泉家族;
    动:TRUN;
    begin
    牲:=日本猪.create;
    倭:=小泉家族.create;
    倭.QueryInterface(TRUN,动);
    动.跑;//小泉家族类的跑
    牲.QueryInterface(TRUN,动);
    动.跑;//日本猪类的跑
    end;
      

  3.   

    如果要搞清接口,我建议参考《DELPHI面向对象编程思想》 刘艺蓍 机械工业出版社。