接口是什么,我们为什么要用它?接口的GUID又是做什么的?

解决方案 »

  1.   

    对象接口(或简单地说接口)定义了能被一个类实现的方法。接口声明和类相似,但不能直接实例化它,
    也不能自己实现(定义)它们的方法,而是由支持接口的任何类来提供实现。一个接口类型的变量能引
    用一个实现了此接口的对象,但是,只有接口中声明的方法才能通过这个变量进行调用。
    接口提供了一些多继承的好处,却没有多继承带来的语义困难。它们对使用分布式对象模型()也是非
    常有效的,定制的、支持接口的对象可以和其它语言(比如C++、Java 和其它语言)编写的对象进行交
    互。
      

  2.   

    接口,可以看成是访问COM对象的一组方法,可能这样理解,接口只是用作虚拟方法的占位符,它不是对象本身,需要通过类来实现,定义只能包含public方法,定义时不允许出现数据成员,如下是不正确的:
    ISampleInterface = interface(IUnknown) //IUnknown 是基本接口,所有接口皆继承于它
      Name: string;
      function GetName: string;
      procedure Setname(s: string);
    end;
    以上是不对的,它出现了数据据成员Name。以下是一个简单的实现例子:ISampleInterface = interface(IUnknown) 
      function GetName: string;
      procedure Setname(s: string);
    end;TSamplempl = class(TInterfaceObject, ISampleInterface)
      Name: string;
      function Getname: string;
      procedure SetName(s: string);
    end;
    .......
    function TSamplempl.GetName: string;
    begin
      Result := Name;
    end;procedure TSamplempl.SetName(s: string);
    begin
      Name := s;
    end;
    end;
      

  3.   

    接口是什么?
    答:接口是一种类型!是接口设计者和使用者之间的一种协议,类似一个抽象类!但接口中不需要可见性指示字,因为接口中所有的方法都是公开的。另外,接口不可以申明私有数据成员我们为什么要用它?
    答:涉及COM的时候,接口是实现的基础,必须使用,这个和COM本身结构设计有关
    如果不涉及COM,那么接口的使用主要是为了实现引用的计数和多继承(这是偶的个人理解)接口的GUID又是做什么的?
    答:一个16字节的记录类型